Java基础复习(八、注解)

八、注解(标注)

注解基础

什么是注解
注解(Annotation)是 JDK 5 以后引入的一种机制,又称标注。它的使用方法和注释基本相同,但与注释不同的是,JVM 可以通过反射的方法获取注解的内容,从而起到对修饰元素(包、类、方法、成员变量、参数以及本地变量等)起到说明和配置的功能。
用处

  • 最常用的功能 - 生成文档。比如说 JDK 中自带的 @param@return
  • 格式检查。比如说 JDK 中自带的 @override@SuppressWarnings,前者用来检查方法是不是覆盖了父类方法,后者用来忽略编译器的 warnning 提示。
  • 跟踪代码依赖性,实现替代配置文件的功能。比如 Spring-boot 中的 @Bean@Controller等等

注解的原理

注解本质是一个继承了Annotation的特殊接口,其具体实现类是 Java 运行时生成的动态代理类。而我们通过反射获取注解时,返回的是 Java 运行时生成的动态代理对象$Proxy1。通过代理对象调用自定义注解(接口)的方法,会最终调用AnnotationInvocationHandlerinvoke方法。该方法会从memberValues这个 Map 中索引出对应的值。而memberValues的来源是 Java 常量池。

一个注解其实就是一种特殊的注释,通过解析从而赋予它特殊的能力。而解析注解的方式有两种:1、编译期直接的扫描;2、运行时反射。
编译期的扫描指的是在对 Java 代码编译字节码的过程中会检测到某个类或者方法被一些注释修饰,这时它就会对于这些注解进行某些处理。
运行时反射指的是利用 JVM 通过动态代理机制生成注释的代理类,并触发方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值