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

相关推荐
hoiii1872 小时前
C# 俄罗斯方块游戏
开发语言·游戏·c#
aqi002 小时前
FFmpeg开发笔记(九十九)基于Kotlin的国产开源播放器DKVideoPlayer
android·ffmpeg·kotlin·音视频·直播·流媒体
huaqianzkh2 小时前
WinForm + DevExpress 控件的「完整继承关系」
开发语言
二哈喇子!2 小时前
Java Web项目怎么创建 & 没有出现web.xml的解决方法
java·web·web.xml
一起养小猫2 小时前
LeetCode100天Day13-移除元素与多数元素
java·算法·leetcode
a***59262 小时前
C++跨平台开发:挑战与解决方案
开发语言·c++
小北方城市网3 小时前
Spring Security 认证授权实战(JWT 版):从基础配置到权限精细化控制
java·运维·python·微服务·排序算法·数据库架构
青槿吖3 小时前
Java 集合操作:HashSet、LinkedHashSet 和 TreeSet
java·开发语言·jvm
刘联其3 小时前
Prism Region注册父子区域 子区域初始化导航没生效解决
java·开发语言
CoderCodingNo3 小时前
【GESP】C++六级考试大纲知识点梳理, (5) 动态规划与背包问题
开发语言·c++·动态规划