2014-04-27 65 views
3

我看不到這個默認的排序方法之間(從java.util.Collections中)可比<? super T>與可比<T>

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 
} 

雖然我瞭解'上'和'下'有界通配符之間的區別,我仍然不明白他們爲什麼使用'?超T'而不是簡單的'T'在這種情況下。如果我使用這些方法,我得到了與他們兩個相同的結果。任何建議?

+0

[問題與>](http://stackoverflow.com/questions/6704085/problem-with-t-extends-comparable-super-t) –

回答

4

有了您的版本,下面將無法編譯:

class Base implements Comparable<Base> { ... } 

class Derived extends Base { ... } 

List<Derived> list = ...; 

mySort(list); 

Derived延伸Comparable<Derived>。但是,它確實延伸Comparable<Base>(因此,Comparable<? super Derived>)。

相關問題