如何获取那些标注了具体的标注对象的所有字段和属性?(How do I get all fields

2019-08-04 02:30发布

如何获取与特定的注解,而无需通过所有的字段或属性描述迭代对象(不是类)的所有字段和属性?

我的目标是,通过每一个字段或属性是明显为的getClass甚至没有这样注释()或不是一个实例的字段或成员变量的类的任何字段,以避免不必要的重复。

或者是迭代去的唯一途径? 难道就没有别的这样做的更好的办法?

Answer 1:

您可以使用反射包 ,做所有的工作适合你。 该项目的描述:

反思扫描你的类路径,索引元数据,使您可以查询它在运行时,可能保存和收集信息,为您的项目中的许多模块。

使用思考你可以查询你的元数据,例如:

  • 得到一些类型的所有亚型
  • 获得各类/方法/域标注有一些注释,W / O注释参数匹配
  • 让所有的资源匹配匹配正则表达式

例:

 Reflections reflections = new Reflections("my.project.prefix");

 Set<Class<? extends SomeType>> subTypes = 
           reflections.getSubTypesOf(SomeType.class);

 Set<Class<?>> annotated = 
           reflections.getTypesAnnotatedWith(SomeAnnotation.class);

 Set<Class<?>> annotated1 =
           reflections.getTypesAnnotatedWith(new SomeAnnotation() {
                public String value() { return "1"; }
                public Class<? extends Annotation> annotationType() { 
                    return SomeAnnotation.class; 
                }
            });


文章来源: How do I get all fields and properties of an object that are annotated with specific annotation?