使用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。     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...