如果我们有一个包含很多字段的类 - 例如 BankAccount 类:
class BankAccount implements Comparable<BankAccount> {
Double amount;
String name;
Instant activeTime;
String currency;
// Insert a lot more fields here
@Override
public int compareTo(BankAccount other) {
return amount.compareTo(other.amount);
}
}
我们希望在所有 BankAccount 实例之间保留自然顺序(以便它们是可比较的),但我们也希望强制当
equals()
为零时,compareTo()
方法返回 true。在这种情况下我们如何编写 compareTo()
方法?我想说“首先比较金额,然后以我不关心的方式一致比较剩余字段”。如果我从 compareTo()
方法中排除其他字段,那么 equals()
的行为将与 compareTo()
不一致,但我也不想在 BankAccount 中的每个字段之间手动进行链接比较。我必须使用 Comparator,还是有更好的解决方案?
它足够简单:
equals()
和 compareTo()
方法,使 compareTo()
返回 0,但 equals 可能返回 true,也可能不返回 true但是我想在这种情况下实现Comparable。我有什么选择?
没有任何要求、合同或期望
equals()
与“compareTo()”一致。