现有的Javabean支持更改不可变的子属性

det*_*erb 5 java immutability javabeans

有没有人知道修改存储在JavaBean兼容对象下的不可变对象的各个属性的任何现有支持?

对于一个简单的例子:

对于给定的不可变值类和bean对象(不担心这个的侦听器):

public class ValueObject {
    private final int value;

    public ValueObject(int value) {
        this.value = value;
    }

    public ValueObject withValue(int newValue) {
        return new ValueObject(value);
    }
}

public class Bean {

    private ValueObject value;

    public ValueObject getValue() {
        return value;
    }

    public ValueObject setValue(ValueObject value) {
        this.value = value;
    }
}
Run Code Online (Sandbox Code Playgroud)

已经可以将酒店视为bean.value.value.

我正在寻找是否有现成的说法,bean.value.value = 3并且基本上有一个相当于的电话bean.setValue(bean.getValue().withValue(3));.

请注意,实际值对象要复杂得多.

谢谢!

Wil*_*ill 1

我会尝试为 bean 类创建一个 BeanInfo 类,该类使用 setWriteMethod 指定属性变换器方法。此 write 方法可以获取原始 int 值并从中创建不可变值对象并将其分配给属性字段。