2
我試着在一個例子中解釋這個問題。我得到了一個名爲X的接口,並且我得到了一個實現X的類Y.在列表中收集了幾個Y的實例。現在,這是我不明白的一點。 當我試圖將這個列表分配給一個集合時,我得到一個編譯器錯誤。 否則,當我將這個列表分配給它的集合時就起作用了。演員表收藏
List<Y> yList = new ArrayList<Y>();
// works
Collection<? extends X> coll1 = yList;
// error
Collection<X> coll2 = yList;
任何人可以解釋什麼這兩個變種,爲什麼之間的差異,第二個是行不通的。
完全重複:http://stackoverflow.com/questions/8093767/generics-cast-issue – jalopaba 2012-04-16 13:31:12
http://docs.oracle.com/javase/tutorial/java/generics/wildcards.html – 2012-04-16 13:32:03