我注意到了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的声明()?
谢谢,这是一个有用的演示文稿。我认为我的问题的根源是第一张真正的幻灯片:列表不是列表