黑马程序员技术交流社区

标题: <T extends Comparable<? super T>> void sort(List<T> list) [打印本页]

作者: asvsass    时间: 2014-3-7 17:10
标题: <T extends Comparable<? super T>> void sort(List<T> list)
Colletions的sort方法
这个表达式有点不能理解
List集合中 装的是 T类型  这个T类型必须实现Comparable接口

如果T是student 实现了 Comparable
父类Person没实现Comparable
Comparable<? super T>这里为什么是  <? super T> 这不是表示 学生类和学生类的父类都可以吗

这不就变成Person可以跟学生比较了吗  而且集合也只接收 T类型的啊 不接受T类型的父类啊
求解释。。。


作者: 榨菜    时间: 2014-3-7 17:22
比如说T是Student  那么返回值<T extends Comparable> 说明是要继承了这个接口的, 但是Person没有继承这个接口。所以返回的对象不会是Person 。这个跟泛型的参数类型的兼容性有关。 然后Comparable<?super T>有是Student或者父类以上的。 两者都满足的就只有Student了
作者: asvsass    时间: 2014-3-7 17:27
榨菜 发表于 2014-3-7 17:22
比如说T是Student  那么返回值 说明是要继承了这个接口的, 但是Person没有继承这个接口。所以返回的对象不 ...

还是有点不理解啊
两者都满足只有T 为什么不直接 Comparable<T>;

作者: 榨菜    时间: 2014-3-7 17:55
asvsass 发表于 2014-3-7 17:27
还是有点不理解啊
两者都满足只有T 为什么不直接 Comparable;

你想想, 如果Person实现了接口  然后Student只是继承了Person。  -------------意思表达不清楚了-------




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2