例えば
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);
同じ問題を抱えている人のために。