Java基础-注解

注解本质是继承了Annotation接口的一个接口


首先,我们通过键值对的形式可以为注解属性赋值,像这样:@Hello(value = "hello")。

接着,你用注解修饰某个元素,编译器将在编译期扫描每个类或者方法上的注解,会做一个基本的检查,你的这个注解是否允许作用在当前位置,最后会将注解信息写入元素的属性表。

然后,当你进行反射的时候,虚拟机将所有生命周期在 RUNTIME 的注解取出来放到一个 map 中,并创建一个 AnnotationInvocationHandler 实例,把这个 map 传递给它。

最后,虚拟机将采用 JDK 动态代理机制生成一个目标注解的代理类,并初始化好处理器。

那么这样,一个注解的实例就创建出来了,它本质上就是一个代理类,你应当去理解好 AnnotationInvocationHandler 中 invoke 方法的实现逻辑,这是核心。一句话概括就是,通过方法名返回注解属性值。

相关推荐
MATLAB代码顾问几秒前
【智能优化】鹈鹕优化算法(POA)原理与Python实现
开发语言·python·算法
lsx2024062 分钟前
C 标准库 - `<stdio.h>`
开发语言
得闲喝茶8 分钟前
JavaScript在数据处理的应用
开发语言·前端·javascript·经验分享·笔记
嵌入式×边缘AI:打怪升级日志8 分钟前
转换模块(十二):实现 RGB 转 RGB + 项目整合与上机实验
开发语言·ios·swift
庞轩px10 分钟前
第五篇:Spring事务管理——@Transactional的底层实现与失效场景
java·spring·事务管理·spring事务·注解transactional
研究点啥好呢12 分钟前
凯捷 自动化测试(Java+Selenium)面试题精选:10道高频考题+答案解析
java·开发语言·python·selenium·测试工具·求职招聘
李白你好13 分钟前
一个面向 Java 反序列化测试的桌面 GUI 工具
java
ghie909016 分钟前
基于遗传算法的配电网重构
开发语言·重构
SilentSamsara19 分钟前
生成器进阶:`yield from`、协程历史与双向通信
开发语言·python·青少年编程·pycharm
kyle~22 分钟前
ROS2---消息过滤
开发语言·c++·机器人·ros2