2 回答
TA贡献1859条经验 获得超6个赞
您的Money类缺少方法的实现equals,这是为了让 Java 知道表示结果的对象m12CHF.add(m14CHF)和new Money(26,"CHF")表示同一事物的对象所必需的,即使这两者是不同的 Java 对象。
里面的代码equals应该遵循这个通用模板:
@Override
public boolean equals(Object o) {
if (o == this) {
return true;
}
if (!(o instanceof Money)) {
return false;
}
Money other = (Money) o;
... // Your code goes here
}
@Override
public int hashCode() {
return Objects.hash(fAmount, fCurrency);
}
您的实现需要将对象的fAmountand与和fCurrency中的值进行比较。用于比较对象;数字可以与运算符进行比较。other.fAmountother.fCurrencyequalsString==
TA贡献1836条经验 获得超13个赞
您需要重写 equals 方法(它是从对象类继承的)
@Override
public boolean equals(Object obj){
if(obj instanceof Money){
Money other = (Money)obj;
//now you define when two intance object of Money are equal...
}
//...
}
为什么这是必要的? 因为您正在使用的当前 equals 是来自 Object 类的 equals。对象的equals方法定义两个对象有相同的引用时是相同的
添加回答
举报