我正在写一个 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 回答
你的
BankAccount
类应该实现java.lang.Comparable<BankAccount>接口,看起来你的代码不是这种情况 . 事实上,Collection.sort正在收集Comparable<T>
作为论据 .确保您的类声明如下所示:
为了覆盖
compareTo
方法,您的类必须实现Comparable
接口 .compareTo
默认情况下不是java.lang.Object
的一部分 .听起来你忘了让你的 class 实现可比较 . 确保您的类声明如下所示:
... class BankAccount ... implements Comparable<BankAccount>
你的类是否实现了Comparable接口?如果是,您可以检查导入以确保它是默认值(java.lang.Comparable)而不是其他包