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