如何解决使用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。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。