我看不出这种默认排序方法(来自java.util.Collections)之间的任何区别
public static <T extends Comparable<? super T>> void sort(List<T> list) {
//implementation
}
..而且:
public static <T extends Comparable<T>> void mySort(List<T> list) {
//implementation
}
虽然我知道&#39;鞋帮&#39;并且&#39;降低&#39;有限的通配符,我仍然不明白为什么他们使用&#39;?超级T&#39;而不是简单的&#39; T&#39;在这种情况下。如果我使用这些方法,我会得到相同的结果。任何建议?
答案 0 :(得分:7)
使用您的版本,以下内容将无法编译:
class Base implements Comparable<Base> { ... }
class Derived extends Base { ... }
List<Derived> list = ...;
mySort(list);
Derived
不延伸Comparable<Derived>
。但是,它确实扩展了Comparable<Base>
(因此,Comparable<? super Derived>
)。