2011-11-02 32 views
4

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

例如,我有一个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对值进行纯属性访问,使用Plain Reflection来获取属性的注释,但似乎没有办法将两种能力结合起来。

回答

3

除非我失去了一些东西,你可以只是反射的Field

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

这里的细微差别是,我想能够支持通过标准的Java bean约定访问(即'的getName()'和字段'name')以及嵌套属性 – BuffaloBuffalo

+0

我在想这个,不确定这是否真的可行,也就是说:你只能根据约定做到这一点。例如,我的专用字段可能与getter setter的名称不同,甚至可能是同一类型。 –

+0

'getField'只给出可公开访问的字段,使用'getDeclaredField'获取受保护的字段 – gerrytan