黑马程序员技术交流社区

标题: 关于Collections中 sort()方法的疑问 [打印本页]

作者: 爽朗的菜籽    时间: 2014-9-17 00:20
标题: 关于Collections中 sort()方法的疑问
在sort()方法中public static <T extends Comparable<? super T>> void sort(List<T> list)
我有2个疑问  
1.Comparable是一个接口 怎么能够被T继承呢 不应该是implements吗,还是说就是这个格式?
                    
2,Comparable<? super T>的意思 是Comparable中操作的是 T和T的父类 ,但是,如果我有2个类,父类是Person,子类是Student,此时 T是Student,Student实现了Comparable接口,并且有新的 comapreTo方法,比较的是Student的私有属性 学号,这个时候 作为Student的父类Person 并没有这个比较方法,怎么能被操作呢,我觉得 如果是 Comparable<? extends T>反而好理解一些,毕竟操作的是T和T的子类,T的子类继承了T中的属性,

作为一只菜鸟实在不敢质疑API的权威,只是相当的困惑,睡不着,想不通

作者: fantacyleo    时间: 2014-9-17 01:29
1. 这里的extends表示继承或实现
2. Comparable T extends Comparable<? super T> 不会出现你说的那种情况,如果出现了,那说明你的类设计有问题。如果Person实现了 Comparable<Person>接口,那么子类自然继承了compareTo方法。如果父类没有实现Comparable接口,那么根据Comparable T extends Comparable<? super T>的要求,Student必须实现Comparable接口,也不会出问题。除非你的Person和Student都没有实现Comparable接口,那就挂了




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