java - 具有可变字段的不可变对象(immutable对象)

标签 java wrapper immutability

设置:我正在尝试编写一个值对象,因此我认为最好使其不可变。该对象有一个 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/

相关文章:

python - 为什么 python 字符串和元组是不可变的?

rust - 你能在 Rust 中指定返回类型可变性吗?

java - 当 CompleteableFuture 既没有完成、取消也没有异常时,会发生什么?

css - CSS 和 HTML 中的横幅帮助

java - 简单的正则表达式提取文件夹

HTML 包装器 Div 标签不起作用?

r - 临时连接周围的r.data.table函数包装器(链中聚合)

domain-driven-design - 域建模: Neither an Entity nor a Value Object

java - 如何将多个文件附加到音频输入流

java - 自动化多人游戏中的坑洼,玩家可以使用自己的算法