相关疑难解决方法(0)

为什么SomeClass <?super T>不等同于Java泛型类型中的SomeClass <T>?

我注意到了Collections.sort的具体说明:

public static <T> void sort(List<T> list, Comparator<? super T> c)
Run Code Online (Sandbox Code Playgroud)

为什么? super这里需要" "?如果ClassB延伸ClassA,那么我们不能保证无论如何Comparator<ClassA>能够比较两个ClassB物体,没有" ? super"部分吗?

换句话说,给定此代码:

List<ClassB> list = . . . ;
Comparator<ClassA> comp = . . . ;
Collections.sort(list, comp);
Run Code Online (Sandbox Code Playgroud)

为什么编译器不够聪明,即使没有? super为Collections.sort()的声明指定" " 也不行!

java generics

8
推荐指数
2
解决办法
4672
查看次数

为什么List <String>是List的子类型,而不是List <Object>的子类型?

可能重复:
为什么List <Number>不是List <Object>的子类型?

是不是Java中String的子类型Object

那么,为什么我不能将类型的对象传递List<String>给接受List<Object>作为参数的函数?但是,我可以将这样的对象传递给一个接受List作为参数的函数.

java generics

4
推荐指数
1
解决办法
4222
查看次数

标签 统计

generics ×2

java ×2