搜索了一陣後,我仍然找不到任何回答我的問題,甚至還有幾個相關主題泛型的,所以在這裏你去:上的Java泛型約束通配符
ArrayList<? super IOException> list = new ArrayList<Exception>();
list.add(new FileNotFoundException("this is ok."));
list.add(new IOException("This is ok"));
list.add(new ClassCastException("compile err"));//why compile err?
list.add(new Exception("compile err"));//why compile err?
爲什麼最後兩行不會編譯?特別是最後一行。我對這個主題做了很多測試,但仍然無法理解這個邏輯。
謝謝。
@凱這有助於清楚地回答你的問題。 – asgs 2011-03-21 08:47:51
謝謝,湯姆,這裏是我沒有得到:爲什麼這一個編譯------ >>> list.add(新的FileNotFoundException(「這是好的。」)); <<< ----我認爲FileNotFoundException也低於IOException的邊界。但它編譯好。 – 2011-03-21 08:52:51
經過一段時間的摘要後,終於明白了:)即使在line1之後,list = new ArrayList(),但是list的元素的基類仍然被限制在滿足條件「?super IOException」的類中,換句話說,元素的基類需要至少(或子類)IOException。 –
2011-03-21 09:14:21