繁体   English   中英

在覆盖compareTo时使用compareTo方法?

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM