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方法定義兩個對象有相同的引用時是相同的
添加回答
舉報