无法在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)而不是其他包