如何获取与特定的注解,而无需通过所有的字段或属性描述迭代对象(不是类)的所有字段和属性?
我的目标是,通过每一个字段或属性是明显为的getClass甚至没有这样注释()或不是一个实例的字段或成员变量的类的任何字段,以避免不必要的重复。
或者是迭代去的唯一途径? 难道就没有别的这样做的更好的办法?
如何获取与特定的注解,而无需通过所有的字段或属性描述迭代对象(不是类)的所有字段和属性?
我的目标是,通过每一个字段或属性是明显为的getClass甚至没有这样注释()或不是一个实例的字段或成员变量的类的任何字段,以避免不必要的重复。
或者是迭代去的唯一途径? 难道就没有别的这样做的更好的办法?
您可以使用反射包 ,做所有的工作适合你。 该项目的描述:
反思扫描你的类路径,索引元数据,使您可以查询它在运行时,可能保存和收集信息,为您的项目中的许多模块。
使用思考你可以查询你的元数据,例如:
- 得到一些类型的所有亚型
- 获得各类/方法/域标注有一些注释,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;
}
});