关于Collections.sort的两个小问题

dreamhunter_lan 2011-08-17 10:12:34
看Tutorial的时候发现有这么一句:If you try to sort a list, the elements of which do not implement Comparable, Collections.sort(list) will throw a ClassCastException.
但真正写了一小段代码的时候是根本编译都通不过,再仔细看sort的声明是这样的:
public static <T extends Comparable<? super T>> void sort(List<T> list) {
1、Tutorial上那句话是不是没说对?
2、sort的声明中static到void之间那个<T extends Comparable<? super T>>是什么意思?(不太懂泛型)
...全文
319 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
dreamhunter_lan 2011-08-17
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 jingluo 的回复:]

楼主,问题重点在于,要实现comparable接口,而不在于计较tutorial中说是抛异常还是编译不过.如果不实现这个接口,你那代码就是错的,你说对吗?
[/Quote]
只是想确认一下是否有对那句话理解错了而已。
jingluo 2011-08-17
  • 打赏
  • 举报
回复
楼主,问题重点在于,要实现comparable接口,而不在于计较tutorial中说是抛异常还是编译不过.如果不实现这个接口,你那代码就是错的,你说对吗?
阳明 to life 2011-08-17
  • 打赏
  • 举报
回复
If you try to sort a list, the elements of which do not implement Comparable, Collections.sort(list) will throw a ClassCastException.
这句话说的Jdk1.4之前,没有泛型的时候
阳明 to life 2011-08-17
  • 打赏
  • 举报
回复
就是你的类需要实现一个借口就是Comparable<A>
而这个A是你的类的父类或本身
dreamhunter_lan 2011-08-17
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 shuwei003 的回复:]

1.那句话说的是对的,必须对实现了Comparable接口的类进行排序,否则会有异常
2.<T extends Comparable<? super T>> 表示T或者T的所有超类,需要实现Comparable接口
[/Quote]
对的?现在是没有实现Comparable接口的话根本就编译都通不过,还抛啥异常啊?
shuwei003 2011-08-17
  • 打赏
  • 举报
回复
1.那句话说的是对的,必须对实现了Comparable接口的类进行排序,否则会有异常
2.<T extends Comparable<? super T>> 表示T或者T的所有超类,需要实现Comparable接口
阳明 to life 2011-08-17
  • 打赏
  • 举报
回复
<T extends Comparable<? super T>>
该泛型T继承了Comparable 而Comparable的泛型为T的父类
softroad 2011-08-17
  • 打赏
  • 举报
回复
1、Tutorial上那句话是不是没说对?

直接用sort()排序的话,list里的元素要实现Comparable方法
若鱼1919 2011-08-17
  • 打赏
  • 举报
回复
<T extends Comparable<? super T>>的问题参考:
<<effective java 2nd>>,Joshua bloch讲的非常透彻
softroad 2011-08-17
  • 打赏
  • 举报
回复
<T extends Comparable<? super T>>
意思就是子类实现Comparable接口。该子类类型为T,也就是上面的String
softroad 2011-08-17
  • 打赏
  • 举报
回复
Collections.sort(list, new Comparable<String>() {
public int compare(String s1, String s2) {
}
});

62,614

社区成员

发帖
与我相关
我的任务
社区描述
Java 2 Standard Edition
社区管理员
  • Java SE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧