2017-07-21 39 views
-14

比方說,我有一個Money類,看起來像這樣:加入法Java類

public class Money { 
    private BigDecimal amount; 
    private Currency currency; 
} 

我想補充兩個這樣的類在一起,例如

Money m1 = Money(5); 
Money m2 = Money(10); 
Money m3 = m1+m2; // m3.amount should be 15 

我該如何編寫一個方法,以便我可以將這兩個Money類加在一起?

+6

而問題是什麼? – Jens

+1

編寫添加方法。 – sudo

+8

這在Java中是不可能的,因爲Java沒有用戶定義的運算符重載 - 沒有辦法爲兩個「Money」對象定義運算符「+」。 – Jesper

回答

4

Java不支持操作符重載,而不是你需要添加一個附加功能:

public class Money { 
    private BigDecimal amount; 
    private Currency currency; 

    public Money add(Money m) { 
     Money res = new Money(); 
     if (!currency.equals(m.currency)) { 
      throw new UnsupportedOperationException(); 
     } 
     res.currency = currency; 
     res.amount = m.amount.add(amount); 
     return res; 
    } 
} 

Money result = one.add(two); 
+0

由於貨幣不匹配,我並不是很樂意返回null。這個問題很好,因爲OP不關心它,但實際上最好是貨幣轉換方法,這樣使用Money類的人不必經常檢查空值。 –

+1

這是非常真實的,編輯 – rubenwardy

+0

現在你拋出一個錯誤?真?這有什麼意義? – Tom