注解@Retention用来修饰注解,是注解的注解。称为元注解。
Retention注解有一个属性value,是RetentionPolicy枚举类型,决定了Retention注解应该如何去保持。
RetentionPolicy有三个值:SOURSE,CLASS ,RUNTIME。
1 注解只会保留在源文件中,编译时注解会被遗弃。
2 注解会保留到class文件中,当class文件中被加载时遗弃,这是默认的注解生命周期。
3 注解不仅被保留到class文件中,还会保留到虚拟机运行时一直存在。
对应于:源文件,.class文件,内存中的字节码。
使用场景:
如果需要在运行时反射去获取注解信息,那只能用RUNTIME注解。
如果编译时需要依赖注解进行预处理,比如生成一些辅助代码等,如Butterknihe,Arounter就用CLASS注解。
如果只是做一些检查性操作,比如@Override和@SuppressWarnings,使用
SOURSE注解,一般是供IDE使用。
网友评论