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

我正在写一个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); 它无法做到。 它给我一个错误,说“不能从参数实例化,因为实际和forms参数的长度不同”和“推断类型不符合声明的约束”。 我认为这是因为我没有覆盖compareTo()方法,但是当我尝试@Override it ,它说“方法不会覆盖或实现超类型的方法”。 我不明白问题是什么。 任何帮助,将不胜感激。

您的BankAccount类应该实现java.lang.Comparable接口,看起来在您的代码中不是这种情况。 实际上, Collection.sort正在将Comparable的集合作为参数。

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

 public class BankAccount implements Comparable 

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

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

... class BankAccount ... implements Comparable

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