解析注解
概念: 通过反射获取类、函数或成员上的运行时注解信息,从而实现动态控制程序运行的逻辑
首先定义两个注解,一个方法注解,一个类注解
解析步骤
1,使用类加载器加载要解析的类
2,找到类上面的注解。这句代码的意思是,判断这个类上是否有一个Description这样的一个注解,返回值是一个boolean值
3,拿到注解实例,打印输出
获取方法上的注解:
首先获取类里面的所有方法,返回值是一个Method数组,然后遍历数组获取注解
获取方法注解的另一种方法,同样是先获取类里面的方法数组,然后遍历类里面的注解,获取Annotation数组,遍历转为Description输出
同样获取到了方法注解
注意!!!
以上都建立在@Retention(RetentionPolicy.RUNTIME)时才能获取到方法和类上的注解
因为所有的注解直在源码级别存在,编译为.class 文件时注解已经不存在
运行时环境只能获取到运行时的注解,也就是RUNTIME
继承注解@Inherited
定义一个Person类
Child继承Person
输出:
说明:继承注解只会继承类上面的注解,不会继承方法上面的注解