該示例將顯示在 上Comparable,但問題是關于所有類似情況。所以 Comparable 是一個通用接口:public interface Comparable<T>我們可以通過兩種方式(主要)實現它:使用泛型類型實現并compareTo使用已知類型參數覆蓋方法:MyClass implements Comparable<MyClass> { @Override public int compareTo(MyClass o) { return myVar.compareTo(o.myVar) }}不使用泛型類型實現并將 compareTo 與Object參數一起使用:MyClass implements Comparable { @Override public int compareTo(Object o) { return myVar.compareTo(((MyClass)o).myVar) }}哪種方法更容易接受?彼此的優缺點是什么?我想第一種方法更好,因為沒有額外的鑄造,但這是唯一的優勢嗎?
1 回答

慕尼黑5688855
TA貢獻1848條經驗 獲得超2個贊
如果您使用第二個而不在第一個之前進行類型檢查,那將沒有任何意義。將其留給編譯器進行這些檢查,然后選擇第一個選項。
在這種特殊情況下,選擇第一個選項可確保Comparator
通過比較同一類型的兩個對象 100% 的時間來履行您的合同。
一般來說,如果泛型是在高級類中定義的,主要是有充分的理由通過提供更具可讀性和可維護性的代碼以及編譯時類型檢查來提供更好的可用性。
添加回答
舉報
0/150
提交
取消