java - 在不破坏不变性的情况下更新不可变对象(immutable对象)

标签 java performance scala immutability immutable-collections

如何在不破坏不变性的情况下从另一个不可变对象(immutable对象)获取更新的不可变对象(immutable对象)。类似于在 Scala 中实现事物的方式或在 Immutables 库中实现事物的方式。

我怎样才能实现类似 Customer.Builder.from(anotherCustomer).replaceOrder(oldOrder,newOrder).with(newName).build()

重用旧对象并将我想要的所有更改排队,以便构建一个新对象。

我正在使用 Java。

最佳答案

public class Customer {
    private String name;    
    private Order order

    private Customer(CustomerBuilder builder) {
        this.name = builder.name;
        this.order = builder.order;
    }

    public Customer replace(Order order) {
        return new CustomerBuilder().name(this.name).order(order).build();
    }

    public static class CustomerBuilder {
        private String name;    
        private Order order

        public CustomerBuilder name(String name) {
            this.name = name;
            return this;
        }

        public CustomerBuilder order(Order order) {
            this.order = order;
            return this;
        }

        public Customer build() {
            return new Customer(this);
        }
    }
}

关于java - 在不破坏不变性的情况下更新不可变对象(immutable对象),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36411845/

相关文章:

java - 如何验证android中特殊字符的编辑文本?

java - 具有依赖项的Intellij Gradle Build Jar

java - 在 hibernate 中使用复合键

jquery - 使用 jQuery 和 css3 水平滑动面板

matlab - 如果不在数组中,则提高附加数组元素的速度

scala - Play 框架和自动生成的演变

具有过滤条件工作流程的 Java 8 流

sql-server - NOT IN 与 <> ALL 之间的主要区别是什么?

java - Scala 符号到 java 枚举

scala - 从 EventStream 创建源