Yos*_*Yos 2 java generics types interface
我正在用 Java 编写一个类,我想实现Comparable接口。这是班级:
public class Flight implements Comparable {
private int flightTime;
public int compareTo(Object o) {
Flight f = (Flight) o;
return this.flightTime - f.flightTime;
}
}
Run Code Online (Sandbox Code Playgroud)
现在我了解到我们还可以向接口添加类型,如下所示:
public class Flight implements Comparable<Flight> {
private int flightTime;
public int compareTo(Flight f) {
return this.flightTime - f.flightTime;
}
}
Run Code Online (Sandbox Code Playgroud)
第二种实现的优点是什么(请不要将问题简化为一般泛型的优点)?
我对 Java 相当陌生,我怀疑添加类型一定有一些好处,因为从表面上看,实现实现了相同的目标。此外,看起来 的实现compareTo(Object o)可能会为我们提供更多信息,因为我们可以测试instanceof并可能处理错误。
对于您的第一个代码,如果您执行以下操作,您将在运行时收到异常:
int i = new Flight().compareTo("xyz");
Run Code Online (Sandbox Code Playgroud)
对于第二个代码,如果您尝试这样做,您将收到编译时错误。
抱歉,但这通常是泛型的基本优势,它适用于您发布的特定案例。泛型只是将许多运行时错误转移到编译时。由于类型擦除,它们实际上并没有做更多的事情。
| 归档时间: |
|
| 查看次数: |
1080 次 |
| 最近记录: |