我注意到了Collections.sort的specificaition:爲什麼SomeClass <? super T>不等於Java泛型中的SomeClass <T>?
public static <T> void sort(List<T> list, Comparator<? super T> c)
爲什麼 「? super
」 必要嗎?如果ClassB
擴展爲ClassA
,那麼我們不能保證Comparator<ClassA>
能夠比較兩個ClassB
對象,沒有「? super
」部分?
換句話說,鑑於此代碼:
List<ClassB> list = . . . ;
Comparator<ClassA> comp = . . . ;
Collections.sort(list, comp);
爲什麼不是編譯器足夠聰明,知道這是OK,即使沒有指定「? super
」爲Collections.sort的聲明()?
謝謝,這是一個有用的演示文稿。我認爲我的問題的根源是第一張真正的幻燈片:列表不是列表