2013-05-18 71 views
0

我想在嵌套的Java對象結構中通過給定的路徑字符串設置值。 如果這麼想的存在屬性collction財產應該得到自動實例:自動實例化對象併爲給定路徑設置值

public class A { 

    List<B> bs; 

    // getter/setter 
} 

public class B { 

    String b1; 

    String b2; 

    // getter/setter 
} 


public Object setValueForPath(String path, Object value){ 

    // magic starts 
    // Set Value for Path 
    // automatically instantiate Objects if nessesary 

} 

A result = setValueForPath("bs[0].b1", "test") // return full Object structure 
assertEqual(result.getBbs().get(0).getB1(), "test"); 

我怎樣才能解決這個問題?

+0

你應該看看阿帕奇公共OGNL:http://commons.apache.org/proper/commons-ognl/language-guide.html –

回答

0

您可以使用OGNL的序列操作符,來完成此操作,但它確實會使您的ognl表達式更難以閱讀。

A a = new A() 
Ognl.setValue("bs.add(0, new com.full.qualified.package.B()), bs[0].b1" a, "test") 
assertEquals("test", a.getBbs().get(0).getB1()) 
相關問題