注解的生命周期

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 
相关推荐
Wang153010 小时前
jdk内存配置优化
java·计算机网络
0和1的舞者10 小时前
Spring AOP详解(一)
java·开发语言·前端·spring·aop·面向切面
Wang153010 小时前
Java多线程死锁排查
java·计算机网络
小小星球之旅11 小时前
CompletableFuture学习
java·开发语言·学习
jiayong2311 小时前
知识库概念与核心价值01
java·人工智能·spring·知识库
皮皮林55112 小时前
告别 OOM:EasyExcel 百万数据导出最佳实践(附开箱即用增强工具类)
java
Da Da 泓12 小时前
多线程(七)【线程池】
java·开发语言·线程池·多线程
To Be Clean Coder12 小时前
【Spring源码】getBean源码实战(三)
java·mysql·spring
Wokoo713 小时前
开发者AI大模型学习与接入指南
java·人工智能·学习·架构
电摇小人13 小时前
我的“C++之旅”(博客之星主题作文)
java·开发语言