注解的生命周期

1、RetentionPolicy.SOURCE:注解只保留在源文件,当Java文件编译成class文件的时候,注解被遗弃,示例:@Override

java 复制代码
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.SOURCE)
public @interface Override {
}

2、RetentionPolicy.CLASS:注解被保留到class文件,但jvm加载class文件时候被遗弃,这是默认的生命周期,示例:@NotNull

java 复制代码
@Documented
@Retention(RetentionPolicy.CLASS)
@Target({ElementType.METHOD, ElementType.FIELD, ElementType.PARAMETER, ElementType.LOCAL_VARIABLE})
public @interface NotNull {
    String value() default "";
}

3、RetentionPolicy.RUNTIME:注解不仅被保存到class文件中,jvm加载class文件之后,仍然存在,这类注解很多,自定义的注解往往是RUNTIME,程序运行时需要一直存在,如spirng的各类引入注解,示例:@Resource

java 复制代码
@Target({TYPE, FIELD, METHOD})
@Retention(RUNTIME)
public @interface Resource 
相关推荐
SEO-狼术7 分钟前
RAD Studio 13.1 Florence adds
java
ywf121518 分钟前
Spring Boot接收参数的19种方式
java·spring boot·后端
敲代码的瓦龙1 小时前
Java?面向对象三大特性!!!
java·开发语言
架构师沉默1 小时前
AI 写的代码,你敢上线吗?
java·后端·架构
骑龙赶鸭1 小时前
java开发项目中遇到的难点,面试!
java·开发语言·面试
NGC_66111 小时前
Java线程池七大核心参数介绍
java·开发语言
float_com2 小时前
【java进阶】------ Lambda表达式
java·开发语言
小碗羊肉2 小时前
【从零开始学Java | 第二十三篇】泛型(Generics)
java·开发语言·新手入门