Operaciones Aritméticas
Con MonetaryAmount es posible realizar operaciones como substracción y suma, subrayando que las implementaciones son inmutables, osea, el resultado resultará en una nueva instancia. Al realizar operaciones que reciben un MonetaryAmount el resultado será también un MonetaryAmount, pero de la implementación de la instancia que llamó al metodo.
public class ArithmeticOperations {
public static void main(String[] args) {
CurrencyUnit currency = Monetary.getCurrency("BRL");
MonetaryAmount money = Money.of(BigDecimal.TEN, currency);
MonetaryAmount money2 = FastMoney.of(BigDecimal.TEN, currency);
MonetaryAmount addResult = money.add(money2);//BRL 20 Money implementation
MonetaryAmount subtractResult = money2.subtract(addResult);//BRL -10 FastMoney implementation
}
}
Para las operaciones de multiplicación, división y resto es necesário pasar un parametro del tipo Number.
public class ArithmeticOperations2 {
public static void main(String[] args) {
CurrencyUnit currency = Monetary.getCurrency("BRL");
MonetaryAmount money = Money.of(100, currency);
Number number = 20;
MonetaryAmount divideResult = money.divide(number);//BRL 5
MonetaryAmount remainderResult = money.remainder(30);//BRL 10
MonetaryAmount resultMultiply = money.multiply(5);//BRL 500
}
}
También es posible realizar operaciones de negación con MonetaryAmount.
public class ArithmeticOperations3 {
public static void main(String[] args) {
CurrencyUnit currency = Monetary.getCurrency("BRL");
MonetaryAmount money = Money.of(100, currency);
MonetaryAmount negateResult = money.negate();//BRL -100
MonetaryAmount plusResult = money.plus();//BRL 100
}
}