自动实例化对象并为给定路径设置值

时间:2013-05-18 18:35:39

标签: java reflection javabeans apache-commons-beanutils

我想在嵌套的Java Object结构中通过给定的Path String设置值。 如果不存在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");

我该如何解决这个问题?

1 个答案:

答案 0 :(得分: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())