注解(也被称为元数据)为我们在代码中添加信息提供了一种形式化的方法,使我妈可以在稍后的某个时刻非常方便的使用这些数据。–《Java编程思想(第4版)》
元注解:
元注解是指注解的注解,包括@Retention @Target @Document @Inherited @Repeatable五种(JDK8)。
- @Retention: 定义注解的保留策略
- @Target:定义注解的作用目标
- @Document:说明该注解将被包含在javadoc中
- @Inherited:说明子类可以继承父类中的该注解
- @Repeatable:表明标记的注解可以多次应用于相同的声明或类型
@Retention的类型:
- RetentionPolicy.SOURCE,注解仅存在于源码中,在class字节码文件中不包含;
- RetentionPolicy.CLASS,默认的保留策略,注解会在class字节码文件中存在,但运行时无法获得;
- RetentionPolicy.RUNTIME,注解会在class字节码文件中存在,在运行时可以通过反射获取到;
@Target的类型:
- ElementType.TYPE,接口、类、枚举、注解
- ElementType.FIELD,字段、枚举的常量
- ElementType.METHOD,方法
- ElementType.PARAMETER,方法参数
- ElementType.CONSTRUCTOR,构造函数
- ElementType.LOCAL_VARIABLE,局部变量
- ElementType.ANNOTATION_TYPE,注解
- ElementType.PACKAGE,包