当前位置: 首页 > 知识库问答 >
问题:

重写compareTo时使用compareTo方法?

宇文鸿振
2023-03-14

当实现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,它会自动按照自然顺序进行比较。但是在可比较的界面中,它不是一个抽象的方法。没有定义它,它还可以比较吗?还有,为什么我不需要使用super关键字来区分这个比较。

共有1个答案

涂煌
2023-03-14

您正在类名中实现方法compareTo

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

换句话说,只有当name不是instanceof name时,这才有效。

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

 类似资料:
  • 我被要求写一个student.compareTo方法,如果两个学生的名字和两个学生的姓氏相同,则该方法应返回0。如果学生的名字按字典顺序排序低于传入的名字,则应返回负值。如果学生的名字按字典顺序排序高于传入的名字,则应返回正值。 这是我到目前为止的代码。对于负值和正值,它应该是固定值还是我应该使用compareTo值? 这是另一个代码。我想知道我是否做对了

  • 问题内容: 常见问题:在Java中实现默认方法的覆盖时,与仅将已实现的方法与将独立逻辑写入equals方法相比,我应该担心什么?我注意到有人在另一个问题中提及,该问题返回false而抛出。是什么使这些不一致的结果成为理想的功能? 采样方法: 编辑: 引用可比文档 当且仅当e1.compareTo(e2)== 0对于C类的每个e1和e2具有与e1.equals(e2)相同的布尔值时,才可以认为C类的

  • 通过删除所有前导和尾随空格返回一个新字符串。 但是,此方法不会丢弃两个字符串之间的空格。 语法 (Syntax) compareTo(String other) 返回值 (Return Type) 返回表示两个字符串之间关系的整数。 0 - 字符串相等时。 1 - 当第一个字符串大于第二个字符串时 -1 - 当第一个字符串小于第二个字符串时 例子 (Example) void main() {

  • 它返回一个整数,表示两个数字之间的关系。 语法 (Syntax) Number.compareTo(x) 参数 (Parameter) x - 代表一个数字。 返回值 (Return Value) 返回值 - 0 - 如果值相等。 1 - 如果当前数字对象大于指定的数值。 -1 - 如果当前数字对象小于指定的数字值。 例子 (Example) void main() { var a =

  • 比较两个日期的订购。 语法 (Syntax) public int compareTo(Date anotherDate) 参数 (Parameters) anotherDate - 要比较的日期。 Return Value - 如果参数Date等于此Date,则值为0 ; 如果此Date在Date参数之前,则小于0的值; 如果此Date在Date参数之后,则值大于0 。 例子 (Example