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

相关推荐
for_ever_love__31 分钟前
Objective-C学习 NSSet 和 NSMutableSet 功能详解
开发语言·学习·ios·objective-c
lizhenjun1141 小时前
android修改线程名字长度
android
云原生指北2 小时前
GitHub Copilot SDK 入门:五分钟构建你的第一个 AI Agent
java
用户69371750013845 小时前
Google 正在“收紧侧加载”:陌生 APK 安装或需等待 24 小时
android·前端
用户69371750013845 小时前
Room 3.0:这次不是升级,是重来
android·前端·google
似水明俊德7 小时前
02-C#.Net-反射-面试题
开发语言·面试·职场和发展·c#·.net
Leinwin7 小时前
OpenClaw 多 Agent 协作框架的并发限制与企业化规避方案痛点直击
java·运维·数据库
薛定谔的悦7 小时前
MQTT通信协议业务层实现的完整开发流程
java·后端·mqtt·struts
enjoy嚣士7 小时前
springboot之Exel工具类
java·spring boot·后端·easyexcel·excel工具类
Thera7777 小时前
C++ 高性能时间轮定时器:从单例设计到 Linux timerfd 深度优化
linux·开发语言·c++