首页 文章

无法@Override Java中的compareTo()方法

提问于
浏览
2

我正在写一个 BankAccount 类,它将一堆银行账户放入一个数组列表中,并根据他们的账号对它们进行排序 . 我写了 compareTo() 方法如下:

public int compareTo(BankAccount another){
    if (Integer.parseInt(this.getAccountNumber()) > Integer.parseInt(another.getAccountNumber()))
        return 1;
    else if(Integer.parseInt(this.getAccountNumber()) < Integer.parseInt(another.getAccountNumber()))
        return -1;
    else
        return 0;

在我的main方法中, accounts 是数组列表的变量 . 当我尝试做 Collections.sort(accounts); 时,它无法做到 . 它给我一个错误,如"cannot instantiate from arguments because actual and formal arguments differ in length"和"inferred type does not conform to declared bound(s)" . 我认为这是因为我没有超越 compareTo() 方法,但当我尝试 @Override it 时,它说"method does not override or implement a method from a supertype" . 我不明白问题是什么 . 任何帮助,将不胜感激 .

5 回答

  • 3

    你的 BankAccount 类应该实现java.lang.Comparable<BankAccount>接口,看起来你的代码不是这种情况 . 事实上,Collection.sort正在收集 Comparable<T> 作为论据 .

  • 10

    确保您的类声明如下所示:

    public class BankAccount implements Comparable<BankAccount>
    
  • 3

    为了覆盖 compareTo 方法,您的类必须实现 Comparable 接口 . compareTo 默认情况下不是 java.lang.Object 的一部分 .

  • 3

    听起来你忘了让你的 class 实现可比较 . 确保您的类声明如下所示:

    ... class BankAccount ... implements Comparable<BankAccount>

  • 1

    你的类是否实现了Comparable接口?如果是,您可以检查导入以确保它是默认值(java.lang.Comparable)而不是其他包

相关问题