Java基础-注解

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


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

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

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

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

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

相关推荐
lkbhua莱克瓦249 小时前
Java基础——集合进阶用到的数据结构知识点1
java·数据结构·笔记·github
Lucky小小吴9 小时前
开源项目5——Go版本快速管理工具
开发语言·golang·开源
Mr.Jessy9 小时前
Web APIs 学习第五天:日期对象与DOM节点
开发语言·前端·javascript·学习·html
杨福瑞9 小时前
数据结构:单链表(2)
c语言·开发语言·数据结构
进化中的码农9 小时前
Go中的泛型编程和reflect(反射)
开发语言·笔记·golang
音符犹如代码10 小时前
Java并发List实战:CopyOnWriteArrayList原理与ArrayList常见面试题
java·开发语言·面试·list
代码or搬砖10 小时前
Docker 部署 Java 项目实践
java·docker·容器
又是忙碌的一天10 小时前
抽象类和接口
java·开发语言
亮剑201810 小时前
第2节:程序逻辑与控制流——让程序“思考”
开发语言·c++·人工智能
lly20240610 小时前
Go 语言接口
开发语言