元注解,是对注解进行注解,用于规范注解,比如自定义了一个注解,可能需要使用元注解
@Target
用于说明一个注解的作用目标,比如是作用在方法、字段、方法参数、构造函数、类上、还是包上
示例:@Target({TYPE,FIELDMETHOD,PARAMETER,CONSTRUCTOR,LOCAL_VARIABLE})
@Retention
用于说明一个注解的作用范围,比如是在源文件、字节码文件、还是运行时有效
示例:@Rentention(RetentionPolicy.SOURCE)
以上示例表示,该注解只被保留在源文件阶段,编译为字节码后将被丢弃
@Rentention的三个参数(或者说生命周期)
- RetentionPolicy.SOURCE 只在源码阶段存活
- RententionPolicy.CLASS 可以在源码和字节码阶段存活( 默认级别 )
- RententionPolicy.RUNTIME 源码(.java)、字节码(.class)、以及被JVM加载到内存 都是存活的