设置:我正在尝试编写一个值对象,因此我认为最好使其不可变。该对象有一个 BigDecimal
,因此:
public class MyValueObject {
private final BigDecimal bob;
public MyValueObject() {
bob = new BigDecimal(0);
}
}
我还编写了一些方法,包括返回新的 MyValueObject
的 add 方法。下面是一个示例:
public MyValueObject add(BigDecimal augend) {
return new MyValueObject(this.bob.add(augend);
}
问题是,这是否有效地设置了 bob
或者它是否按预期返回一个带有全新 BigDecimal
的全新 MyValueObject
?
最佳答案
如果您使用“new”,您将创建一个新对象。所以它返回一个全新的 MyValueObject,它利用“bob”,但不一样。
关于java - 具有可变字段的不可变对象(immutable对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27908357/