2011-02-03 75 views
5

有誰知道任何現有支持修改存儲在符合JavaBean的對象下的不可變對象的個別屬性?現有的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

我會嘗試創建一個bean類的BeanInfo類,該類指定使用setWriteMethod的屬性mutator方法。此寫入方法可以獲取基本的int值並從中創建不可變的值對象,並將其分配給屬性字段。