@Retention注解详解
一、介绍:
@Retention是用来修饰注解的,注解的注解,也称为元注解
二、作用:
@Retention修饰注解,用来表示注解的生命周期,生命周期的长短取决于@Retention的属性RetentionPolicy指定的值,例如@Retention(RetentionPolicy.RUNTIME)
取值
描述
作用范围
使用场景
RetentionPolicy.SOURCE
表示注解只保留在源文件,当java文件编译成class文件,就会消失
源文件
只是做一些检查性的操作,,比如 @Override 和 @SuppressWarnings
RetentionPolicy.CLASS
注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期
class文件(默认)
要在编译时进行一些预处理操作,比如生成一些辅助代码(如 ButterKnife)
RetentionPolicy.RUNTIME
注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在
运行时也存在
需要在运行时去动态获取注解信息
上面三种类型生命周期:SOURCE<CLASS<RUNTIME,使用RUNTIME会包含前面两个生命周期