假設我有這個類:的Java覆蓋的compareTo與異常處理
public abstract class GraphEdge implements Comparable {
public abstract double getLength() throws DependencyFailureException;
@Override
public int compareTo(Object obj) {
return Double.compare(getLength(), ((GraphEdge)obj).getLength());
}
}
讓我們不要擔心在這一刻檢查的compareTo obj的類型。如果getLength()的依賴失敗,則拋出異常DependencyFailureException。由於getLength()拋出一個異常,因爲DependencyFailureException未處理,所以compareTo給出編譯時錯誤。
我不知道try/catch是否是我能做的最好的事情,就像在getLength()中發生異常一樣,這意味着此邊的長度不再有意義,並將它與另一個雙重沒有幫助。我認爲如果發生異常從getLength()發生,它應該只是表面上調用hirachey的頂部。
DependencyFailureException是一個自定義異常,我可以根據需要進行更改。
我該怎麼做才能使GraphEdge具有可比性?
如果你正在使用泛型,你不需要介意'obj'的類型。 – SomeJavaGuy
@KevinEsche的確如此。這不是我關心的問題,因爲我的主要問題是異常處理。 – jamesdeath123
你也有多個編譯時錯誤。您不能在非抽象類中定義抽象方法。你不能在基元上調用'compareTo'。 – SomeJavaGuy