假设我有这个类:的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