【问题标题】:Bean Property Access and AnnotationsBean 属性访问和注释
【发布时间】:2011-11-02 14:04:18
【问题描述】:

是否有任何 java 库允许我使用 BeanUtils,例如属性访问 bean.prop1.prop2,同时允许访问 getter/field 本身的注释?

例如,我有一个如下所示的 bean 类:

public class Child {
  @SomeCustomAnnotation
  private String name;
  //standard bean getter setters
  }

public class Parent {
  private Child child;
  //standard bean getter setters
}

我希望不仅能够检索我正在寻找的属性的值,而且还能够检索在该字段上注释的任何注释,该字段的值被返回:

String childsName = SomeLibrary.getValue(parent, "child.name");
Annotation[] annotationsOnChildsName = SomeLibrary.getAnnotations(parent, "child.name");

是否存在允许这两种功能的库?我可以使用 Commons BeanUtils 对值进行纯属性访问,并使用普通反射来获取属性的注释,但似乎没有办法将这两种功能结合起来。

【问题讨论】:

    标签: java reflection apache-commons-beanutils


    【解决方案1】:

    除非我遗漏了什么,否则你可以只使用反射的Field

    Field f = Parent.class.getField("name");
    Object value = f.get(parent);
    f.getAnnotations();
    

    【讨论】:

    • 这里的细微差别是我希望能够支持通过标准 java bean 约定(即getName() 和字段name)以及嵌套属性的访问
    • 我在考虑这个问题,但不确定这是否真的可行,即:你只能根据惯例来做。例如,我的私有字段可能与 getter setter 命名不同,甚至类型不同。
    • getField 只提供可公开访问的字段,使用getDeclaredField 获取受保护的字段
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-12-14
    • 1970-01-01
    • 1970-01-01
    • 2013-09-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多