看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>>是什么意思?(不太懂泛型)

解决方案 »

  1.   

    Collections.sort(list, new Comparable<String>() {
       public int compare(String s1, String s2) { 
    }
    });
      

  2.   

    <T extends Comparable<? super T>>
    意思就是子类实现Comparable接口。该子类类型为T,也就是上面的String
      

  3.   

    <T extends Comparable<? super T>>的问题参考:
    <<effective java 2nd>>,Joshua bloch讲的非常透彻
      

  4.   

    1、Tutorial上那句话是不是没说对?直接用sort()排序的话,list里的元素要实现Comparable方法
      

  5.   

    <T extends Comparable<? super T>>
    该泛型T继承了Comparable 而Comparable的泛型为T的父类
      

  6.   

    1.那句话说的是对的,必须对实现了Comparable接口的类进行排序,否则会有异常
    2.<T extends Comparable<? super T>> 表示T或者T的所有超类,需要实现Comparable接口
      

  7.   

    对的?现在是没有实现Comparable接口的话根本就编译都通不过,还抛啥异常啊?
      

  8.   

    就是你的类需要实现一个借口就是Comparable<A>
    而这个A是你的类的父类或本身
      

  9.   

    If you try to sort a list, the elements of which do not implement Comparable, Collections.sort(list) will throw a ClassCastException.  
    这句话说的Jdk1.4之前,没有泛型的时候
      

  10.   

    楼主,问题重点在于,要实现comparable接口,而不在于计较tutorial中说是抛异常还是编译不过.如果不实现这个接口,你那代码就是错的,你说对吗?