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");

我怎么解决这个问题?

4

1 回答 1

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())
于 2014-05-23T20:38:47.333 回答