我知道Interface Comparable<T>
中有一種方法,那就是compareTo()
。我假設它只是一個沒有任何實現的函數名稱,當任何類實現Comparable接口時,該類必須覆蓋該方法。但後來我讀了Docs爲什麼compareTo()有它自己的實現主體,而Comparable是一個接口?
並發現Comparable也返回一個值int,並且具有它自己的實現,而不需要在實現類中重寫它。
例如,下面的例子:
public static <T extends Comparable<T>> T max(T a, T b) {
if (a == null) {
if (b == null) return a;
else return b;
}
if (b == null)
return a;
return **a.compareTo(b)** > 0 ? a : b;
}
這是因爲你正在使用「Comparable」對象引用,而不是「compareTo」方法(可能你認爲你在做)。 「 –
」可以作爲一種常規方法「?你能否將這句話改爲更有意義?老實說,我不明白你在問什麼。 –
Docs只是聲明'compareTo'應該返回什麼(它的*合約*)。爲什麼你認爲它意味着它在界面中有一個實際的實現? –