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. 框架配置/依赖注入/权限检查/序列化/反序列化

相关推荐
风流倜傥唐伯虎10 小时前
Spring Boot Jar包生产级启停脚本
java·运维·spring boot
二十雨辰10 小时前
[python]-AI大模型
开发语言·人工智能·python
Doro再努力10 小时前
【Linux操作系统10】Makefile深度解析:从依赖推导到有效编译
android·linux·运维·服务器·编辑器·vim
Yvonne爱编码10 小时前
JAVA数据结构 DAY6-栈和队列
java·开发语言·数据结构·python
Re.不晚10 小时前
JAVA进阶之路——无奖问答挑战1
java·开发语言
Daniel李华11 小时前
echarts使用案例
android·javascript·echarts
你这个代码我看不懂11 小时前
@ConditionalOnProperty不直接使用松绑定规则
java·开发语言
pas13611 小时前
41-parse的实现原理&有限状态机
开发语言·前端·javascript
fuquxiaoguang11 小时前
深入浅出:使用MDC构建SpringBoot全链路请求追踪系统
java·spring boot·后端·调用链分析
琹箐11 小时前
最大堆和最小堆 实现思路
java·开发语言·算法