注解的生命周期

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 
相关推荐
Moe48817 分钟前
ConcurrentHashMap 重要方法实现原理和源码解析(二)
java·后端
有梦想的攻城狮34 分钟前
初识Rust语言
java·开发语言·rust
小虾米 ~1 小时前
RocketMQ DefaultMQPushConsumer vs DefaultLitePullConsumer
java·rocketmq·java-rocketmq
q***21601 小时前
【监控】spring actuator源码速读
java·spring boot·spring
Kuo-Teng1 小时前
LeetCode 142: Linked List Cycle II
java·算法·leetcode·链表·职场和发展
Moe4881 小时前
ConcurrentHashMap 重要方法实现原理和源码解析(一)
java·后端
拾忆,想起2 小时前
Dubbo核心架构全解析:构建微服务通信的高速公路
java·微服务·云原生·架构·dubbo·哈希算法
楠枬2 小时前
Spring Cloud 概述
java·spring cloud·微服务
♡喜欢做梦2 小时前
MyBatis操作数据库(入门)
java·数据库·mybatis
q***d1732 小时前
微服务与单体架构的成本对比
java·微服务·架构