使用BeanUtils检索字段值

| 我想提取未由某些自定义注释标记的私有字段值,这可以通过BeanUtils吗?如果是,怎么办?     
已邀请:
是的,假设您知道字段名称。您可以使用
PropertyUtils.getSimpleProperty(...)
。另请参见此处的示例。     
不可以,BeanUtils无法实现。但是您可以使用Java自己的反射工具,如下所示:
public class BeanUtilTest {
    public static void main(String[] args) throws ... {
        MyBean bean = new MyBean();

        Field field = bean.getClass().getDeclaredField(\"bar\");
        field.setAccessible(true);
        System.out.println(field.get(bean));
    }

    public static class MyBean {
        private final String bar = \"foo\";
    }
}
请考虑:使用反射访问私有字段是非常糟糕的样式,仅应在测试或确定没有其他方法的情况下进行。如果您无权更改您尝试访问的类的源,则可能是不得已的选择。但是请考虑一下,这种行为将来可能会发生变化(例如,您正在使用的库的更新)并破坏您的代码。 编辑:如果BeanUtils或PropertyUtils正在工作,则意味着此属性有一个公共获取器,您应该使用它而不是使用反射。在没有公共获取器的私有字段上使用PropertyUtils会引发NoSuchMethodException。     

要回复问题请先登录注册