处理注解
-
获取所有类并遍历
Files.walk(rootPath)
- android:
dalvik.system.DexFile.entries()
-
从类上获取注解
clazz.getAnnotation(XXX.class)
XXX指注解名
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface TestAnnotation {
String value() default "test";
}
Class clazz = Class.forName(className);
if (clazz.isAnnotationPresent(TestAnnotation.class)) { //判断类型是否存在指定注解。(TestAnnotation为注解名)
Annotation annotation = clazz.getAnnotation(TestAnnotation.class); //取指定类型的注解实例
Method method = annotation.getClass().getDeclaredMethod("value");
String value = (String) method.invoke(annotation);
//...
}
注解的作用
- 注解的作用是标注信息:
- 有无注解本身是一个信息;
- 注解内可以定义属性,传递信息
- 怎么生效:
- 对特定类、方法检测是否持有指定注解,获取注解属性。
- 可以扫描所有类,过滤指定注解,进行处理
- 类加注解 vs 类定义静态属性
- 不同的类定义同样的静态属性,可以通过反射方法检测。但是这些分别定义的静态属性缺乏关联,难以管理。
- 注解定义后,作用就确定下来,有一定的约束性,便于维护。
- 注解可以用于函数、字段,更灵活。