class tester
{
@Test
public void testBeanUtils() throws InvocationTargetException, IllegalAccessException, NoSuchMethodException
{
Stranger stranger = new Stranger();
BeanUtils.setProperty(stranger,"name","wener");
BeanUtils.setProperty(stranger,"xname","xwener");
BeanUtils.setProperty(stranger,"yname","ywener");
System.out.println(stranger);
}
@Data// lombok annotation generate all setter and getter
public static class Stranger
{
@Accessors(chain = true)// generate chained setter
String name;
String xname;
String yname;
public Stranger setYname(String yname)// no lombok, still not work
{
this.yname = yname;
return this;
}
}
}
我的输出:
TestValues.Stranger(name=null, xname=xwener, yname=null)
这有什么错呢?连锁二传是一件好事。 有什么建议吗?
编辑
回到这个问题再试一次,我就没法删除Accessors chain
。 现在我用commons-lang3
来实现。
// force access = true is required
Field field = FieldUtils.getField(bean.getClass(), attrName, true);
field.set(bean,value);
对于那些谁得到了同样的问题。
也许BeanHelper可以在这里使用。它似乎使用Fluent界面INstrospector。 https://apache.googlesource.com/commons-configuration/+/b5ef1eb1a7dd34a06cf68dae4bfcada9e1121818/src/main/java/org/apache/commons/configuration/beanutils/BeanHelper.java –
坦克,已经禁用链,等待[BeanUtils2] (http://commons.apache.org/sandbox/commons-beanutils2/) – wener