Android 注解的重要元素【Retention】【三】

@Retention
RetentionPolicy.RUNTIME生命周期
: 运行时保留,通过反射访问【反射访问有一定性能开销】

  1. 源代码阶段:

定义带有@Retention(RetentionPolicy.RUNTIME)的注解

在类、方法、字段等元素上使用注解

此时注解仅存在于源代码中

  1. 编译阶段:

javac编译器将注解信息嵌入到.class文件中

注解的类型、属性值等元数据被完整保留

与SOURCE策略不同,不会在此阶段被丢弃

  1. 类加载阶段:

JVM加载.class文件时读取注解信息

注解元数据被加载到方法区(Metaspace

保持注解与被注解元素的关联关系

  1. 运行时阶段:

通过反射API可在运行时访问注解信息

使用getAnnotation()、isAnnotationPresent()等方法

注解信息在应用运行期间始终可用

使用场景:

  1. AOP(面向切面编程):AspectJ等AOP框架需要在运行时读取注解来实现切面逻辑

  2. 测试框架: JUnit等测试框架在运行时读取测试注解来执行测试

  3. 框架配置/依赖注入/权限检查/序列化/反序列化

相关推荐
不爱说话郭德纲8 小时前
告别漫长的HbuilderX云打包排队!uni-app x 安卓本地打包保姆级教程(附白屏、包体积过大排坑指南)
android·前端·uni-app
程序员清风10 小时前
程序员兼职必看:靠谱软件外包平台挑选指南与避坑清单!
java·后端·面试
皮皮林55112 小时前
利用闲置 Mac 从零部署 OpenClaw 教程 !
java
Sinclair12 小时前
简单几步,安卓手机秒变服务器,安装 CMS 程序
android·服务器
雮尘15 小时前
手把手带你玩转Android gRPC:一篇搞定原理、配置与客户端开发
android·前端·grpc
ktl17 小时前
Android 编译加速/优化 80%:一个文件搞定,零侵入零配置
android
华仔啊17 小时前
挖到了 1 个 Java 小特性:var,用完就回不去了
java·后端
SimonKing17 小时前
SpringBoot整合秘笈:让Mybatis用上Calcite,实现统一SQL查询
java·后端·程序员
alexhilton1 天前
使用FunctionGemma进行设备端函数调用
android·kotlin·android jetpack
冬奇Lab1 天前
InputManagerService:输入事件分发与ANR机制
android·源码阅读