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

时间:2011-02-03 18:29:57

标签: 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;
    }
}

已经可以将该属性视为bean.value.value

我正在查看是否有现成的说法bean.value.value = 3并且基本上有一个等同于bean.setValue(bean.getValue().withValue(3));的电话。

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

谢谢!

1 个答案:

答案 0 :(得分:1)

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