* 元注解:用于描述注解的注解 其实本质元注解还是一个注解
* @Target:描述注解能够作用的位置(注解是能作用在类上还是方法上)
* ElementType取值: ElementType是枚举
* TYPE:可以作用于类上
* METHOD:可以作用于方法上
* FIELD:可以作用于成员变量上
* @Retention:描述注解被保留的阶段 (源码 class run time阶段)
* @Retention(RetentionPolicy.RUNTIME):当前被描述的注解,会保留到class字节码文件中,并被JVM读取到
* @documented:描述注解是否被抽取到api文档中()
* @Inherited:描述注解是否被子类继承 则teacher类会继承worker类的注解
1. * TYPE:可以作用于类上 其他两个类似 也可以集合内三个都写这样都能用
注解类
worker类
@Retention
Retention源码:
也是一个枚举类型 有三个阶段
注解类
worker类 中不用管 其实也就是@MyAnno3 调用了 如果没有参数worker中的@MyAnno3连括号也不用加 在是实现类中加括号只是如果注解类中抽象的构造方法的话才传参数
@documented
效果 过程
worker 注意看两个@MyAnno3 方法的保留了
方法
name
但是如果删除了 注解类中的@documented
则注解不会再api文档中体现 注意比较上下文图片
@Inherited
新建一个teacher类继承worker类
teacher类中没有注解
但是worker类中有注解 @MyAnno3
而且 注解类MyAnno3被 @Inherited描述了
则teacher类会继承worker类的注解@MyAnno3
注解类:



