[英]using compareTo method when overriding compareTo?
当实现Comparable接口并覆盖compareTo方法时,
@Override
public int compareTo(Name o) {
int val = this.name.compareTo(o.name);
if (val != 0) {
return val;
}
if (count != o.count) {
return count - o.count;
}
}
第三行,我意识到我可以在覆盖它时使用compareTo,它会按照自然顺序自动比较事物。 但是在可比较的接口中,compareTo不是抽象方法。 如果没有定义,它仍然可以比较吗? 另外,为什么我不需要使用超级关键字来区分此compareTo。
您将在class Name extends Comparable<Name>
中实现方法compareTo
。 该类有一个名为name
的成员。如果您在第三行中调用Name.compareTo
,则会因无穷递归而崩溃,也不能调用Comparable.compareTo
,这确实是抽象的。
您正在调用X.compareTo
,其中X是X.compareTo
声明成员变量name
的类型。
换句话说,这仅在name
不是instanceof Name
。
顺便说一句,您将需要在最后一个if块中添加一个带有return语句的else分支,否则此代码段将无法编译。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.