设置:我试图编写一个值对象,所以我认为最好使其不可变。该对象具有BigDecimal,因此:

public class MyValueObject {
    private final BigDecimal bob;

    public MyValueObject() {
        bob = new BigDecimal(0);
    }
}


我还写了一些方法,包括add方法,它们返回新的MyValueObject。这是一个示例:

public MyValueObject add(BigDecimal augend) {
        return new MyValueObject(this.bob.add(augend);
}


问题是,这是否有效地设置了bob还是按预期返回了带有全新MyValueObject的全新BigDecimal

最佳答案

如果使用“新”,则说明正在创建一个新对象。因此,它返回的是一个全新的MyValueObject,它使用了“ bob”,但并不相同。

09-11 17:19