元注解:负责对其他注解进行说明的注解,自定义注解时可以使用元注解。元注解主要包含@Document、@Target、@Retention、@Inherited,后续又增加了@Repeatable和@Native两个注解。
1、每个注解必须存在的
@Target:注解可以被用来用在哪个/哪些元素上。比如@Target(ElementType.METHOD)
@Retention:注解会保留到哪个阶段
2、
@Document:一个标记注解,没有成员变量。
@Inherited:
@Repeatable:
@Native:
1、@Document元注解
@Document元注解是一个标记注解,没有成员变量。用@Document注解修饰的注解类会被JavaDoc工具提取成文档。默认情况下,JavaDoc是不包括注解的,但如果声明注解时指定了@Document,就会被JavaDoc之类的工具处理,所以注解类型信息就会被包括在生成的帮助文档中。
2、@Target
@Target注解用来指定一个注解的使用范围,即被@Target修饰的注解可以用在什么地方。@Target注解有一个成员变量(value)用来设置适用目标,value是java.long.annotation.ElementType枚举类型的数据组。
ElementType常用的枚举常量:
image.png
3 、@Retention
@Retention用于描述注解的生命周期,也就是该注解被保留的时间长短。@Retention注解中的成员变量(value)用来设置保留策略,value是java.lang.annotation.RetentionPolicy枚举类型,RetentionPolicy有3个枚举常量:
- SOURCE:在源文件中有效(即源文件保留)
- CLASS:在class文件中有效(即class保留)
- RUNTIME:在运行时有效(即运行时保留)
生命周期大小排序为SOURCE < CLASS < RUNTIME.
4、@Inherited
@Inherited 是一个标记注解,用来指定该注解可以被继承。使用@Inherited注解的class类,表示这个注解可以被用于该Class类的子类。就是说如果某个类使用了被@Inherited修饰的注解,则其子类将自动具有该注解。
5、@Repeatable
@Repeatable注解,允许在相同的程序元素中重复注解,在需要对同一注解多次使用时,往往需要借助@Repeatable注解。
6、@Native
@Native注解修饰成员变量,则表示这个变量可以被本地代码引用,常常被代码生成工具使用。






网友评论