注解的生命周期

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 
相关推荐
软萌萌的15 小时前
Java Spring Boot 修改yml配置&加载顺序规则
java·spring boot·python
IT小盘6 小时前
13-企业Prompt模板-角色任务约束与输出格式
java·前端·prompt
爱敲键盘的猴子6 小时前
Java并发编程 -- volatile
java·java并发
plainGeekDev8 小时前
工厂模式 → Hilt
android·java·kotlin
plainGeekDev8 小时前
Application 单例 → Hilt Singleton
android·java·kotlin
888CC++8 小时前
C语言与C++的区别:从面向过程到面向对象
java·c语言·c++
学者猫头鹰9 小时前
分布式事务实战教程
java·分布式
heimeiyingwang10 小时前
【架构实战】Kubernetes调度器深度剖析:从Pod调度到自定义调度器
java·架构·kubernetes
纳兰青华11 小时前
回文侦探:三种境界破解最长回文子串
java·算法·动态规划
Zane199412 小时前
CAS 与原子类:Java 如何实现无锁编程
java·后端