• 博客园logo
  • 会员
  • 众包
  • 新闻
  • 博问
  • 闪存
  • 赞助商
  • HarmonyOS
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
思想人生从关注生活开始
博客园    首页    新随笔    联系   管理    订阅  订阅

RetentionPolicy 枚举类型介绍

RetentionPolicy 是 Java 中的一个枚举类型,它定义了注解的保留策略。这些保留策略决定了注解在编译时、运行时或两者之间的行为。这个枚举类型通常与 @Retention 元注解一起使用,以指定某个注解的保留策略。

下面是这个枚举类型的详细解释:

枚举常量

  1. SOURCE (SOURCE)
    • 描述:注解只在源代码级别存在,被编译器丢弃。
    • 用途:通常用于在编译时进行一些检查或处理,例如用于生成代码、警告、错误等。
    • 示例:某些用于代码生成的注解可能只需要在源代码阶段处理,不需要保留到编译后的字节码中。
  2. CLASS (CLASS)
    • 描述:注解在编译时会被记录在类文件中,但不会被虚拟机(VM)在运行时保留。这是默认行为。
    • 用途:注解可以在编译时用于处理类文件,但不需要在运行时被反射访问。
    • 示例:一些在编译时优化代码或执行某些检查的注解可能只需要在类文件中存在。
  3. RUNTIME (RUNTIME)
    • 描述:注解在编译时会被记录在类文件中,并且会被虚拟机(VM)在运行时保留,因此它们可以通过反射被读取。
    • 用途:这是最常见的情况,当你想在运行时通过反射访问注解时,你需要使用这个保留策略。
    • 示例:Spring 框架中的很多注解,如 @Autowired、@Component 等,都是 RUNTIME 保留策略的,因为它们需要在运行时被框架读取以执行相应的操作。

使用方法

@Retention 元注解通常与 RetentionPolicy 枚举一起使用,以指定某个注解的保留策略。例如:

@Retention(RetentionPolicy.RUNTIME)  
public @interface MyAnnotation {  
    // ...  
}

  

在这个例子中,MyAnnotation 注解被标记为 RUNTIME 保留策略,这意味着它会被保留在编译后的类文件中,并且在运行时可以通过反射被访问。

posted @ 2024-05-15 11:02  JackYang  阅读(129)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2025
浙公网安备 33010602011771号 浙ICP备2021040463号-3