我正在用 Java 编写一个类,我想实现 Comparable
接口(interface)。这是类:
public class Flight implements Comparable {
private int flightTime;
public int compareTo(Object o) {
Flight f = (Flight) o;
return this.flightTime - f.flightTime;
}
}
现在我知道了我们还可以给接口(interface)添加类型,如下所示:
public class Flight implements Comparable<Flight> {
private int flightTime;
public int compareTo(Flight f) {
return this.flightTime - f.flightTime;
}
}
第二种实现的优点是什么(请不要将问题简化为一般泛型的优点)?
我是 Java 的新手,我怀疑添加类型一定有一些好处,因为从表面上看,实现实现了相同的目标。此外,看起来 compareTo(Object o)
的实现可能会为我们提供更多信息,因为我们可以测试 instanceof
并可能处理错误。
最佳答案
对于您的第一个代码,如果您执行以下操作,您将在运行时遇到异常:
int i = new Flight().compareTo("xyz");
对于您的第二个代码,如果您尝试这样做,您将遇到编译时错误。
抱歉,这通常是泛型的基本优势,它适用于您发布的特定案例。泛型只是将大量运行时错误转移到编译时。因为type erasure ,他们实际上并没有做更多的事情。
关于java - 在 Java 中使用类型化接口(interface)比接收特定类型的方法有什么优势?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46020975/