我阅读了this Oracle's article关于Java中的接口。我认为,提供的例子很糟糕。他们使用以下示例:
public interface Relatable {
public int isLargerThan(Relatable other);
}
public class RectanglePlus implements Relatable {
public int isLargerThan(Relatable other) {
RectanglePlus otherRect = (RectanglePlus) other;
if (this.getArea() < otherRect.getArea()) {
return -1;
}
else if (this.getArea() > otherRect.getArea()) {
return 1;
}
else {
return 0;
}
}
将Relatable other
投射到RectanglePlus
是否可以接受?我想不是。在我的理解中,如果这个类将通过接口引用使用,那么这样的实现将会失败,并且有人会尝试将它与Relatable
的另一个实现进行比较,这不是&#39;实际上是RectanglePlus
的一个实例。我认为,这种接口的使用是有效的,而问题在于实现。
答案 0 :(得分:0)
isLargerThan
的{{1}}不是Relatable
(或其任何子项)的实例,则此代码可能会抛出强制转换异常
他们应该检查使用RectanglePlus
传递的对象的类。