就是标识这个类是一个注解类的注解,它分为以下几种:
@Target 注解
指明了修饰的这个注解的使用范围,即被描述的注解可以用在哪里。
ElementType 属性的取值:
- TYPE:类,接口或者枚举;
- FIELD:域,包含枚举常量;
- METHOD:方法;
- PARAMETER:参数;
- CONSTRUCTOR:构造方法;
- LOCAL_VARIABLE:局部变量;
- ANNOTATION_TYPE:注解类型;
- PACKAGE:包;
@Retention 注解
指明修饰的注解的生存周期,即会保留到哪个阶段。
RetentionPolicy 的取值:
- SOURCE:源码级别保留,编译后即丢弃。
- CLASS:编译级别保留,编译后的class文件中存在,在jvm运行时丢弃,这是默认值。
- RUNTIME:运行级别保留,编译后的class文件中存在,在jvm运行时保留,可以被反射调用。
@Documented 注解
表示该注解是否可以生成到 API文档中,在该注解使用后,如果导出API文档,会将该注解相关的信息可以被例如javadoc此类的工具文档化。
@Inherited注解
允许子类继承父类中的注解。
假设一个注解在定义时,使用了@Inherited,然后该注解在一个类上使用,如果这个类有子类,那么通过反射我们可以从类的子类上获取到同样的注解。