首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在重写compareTo时使用compareTo方法?

在重写compareTo时使用compareTo方法?
EN

Stack Overflow用户
提问于 2016-09-25 05:06:08
回答 1查看 294关注 0票数 0

当实现可比较接口并重写compareTo方法时,

代码语言:javascript
复制
@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。

EN

回答 1

Stack Overflow用户

发布于 2016-09-25 05:28:55

您将在class Name extends Comparable<Name>中实现方法compareTo。这个类有一个叫做name.If的成员,你在第三行调用了Name.compareTo,你会因为无限的递归而崩溃,你也不能调用Comparable.compareTo,它实际上是抽象的。

您将调用X.compareTo,其中X是用于声明成员变量name的类型。

换句话说,只有当name不是instanceof Name时,这才能起作用。

顺便说一句,您需要在最后一个if代码块中添加一个带有return语句的else分支,否则这段代码将无法编译。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39680973

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档