在簽名表達<T extends Comparable<T>>
等「<T extends Comparable <T>>」和「<T extends Comparable <Comparable <T> >>」之間的區別?
public static <T extends Comparable<T>> foo(T x) { ... }
的T
描述遞歸取決於Comparable<T>
。
如果T
延伸Comparable<T>
和Comparable<T>
延伸Comparable<Comparable<T>>
,是不是遵循T
延伸Comparable<Comparable<T>>
?
IOW,是extends
的關係傳遞?
如果是這樣,爲什麼不等同於
public static <T extends Comparable<T>> int compare(T x, T y) {
return x.compareTo(y);
}
public static <T extends Comparable<Comparable<T>>> int compare(T x, T y) {
return x.compareTo(y);
}
?事實上,最後的定義編譯,而它上面的一個無法編譯,並顯示錯誤
comp.java:7: compareTo(java.lang.Comparable<T>) in
java.lang.Comparable<java.lang.Comparable<T>> cannot be applied to (T)
return x.compareTo(y);
謝謝!
我認爲你有一個語法錯誤'可比>'應該是'可比>' –
dfb