当前位置: 首页 > news >正文

2. 注解Annotation

Java注解(Annotation)又称为Java标注,是JDK5.0引入的一种注释机制.注解是原数据的一种形式,提供有关于程序但不属于程序本身的数据.注解对他们注解的代码的操作没有直接的影响.

声明方式
注解的声明方式使用@interface关键字,举例说明:

public @interface MyInject{
}

元注解

  1. @Target 用来限制可以使用注解的Java元素类型
    • ElementType.ANNOTATION_TYPE 注解类型
    • ElementType.CONSTRUCOR 注解构造函数
    • ElementType.FIELD 注解字段或属性
    • ElementType.LOCAL_VARIABLE 注解局部变量
    • ElementType.METHOD 注解方法
    • ElementType.PACKAGE 注解包
    • ElementType.PARAMETER 注解方法的参数
    • ElementType.TYPE 注解类的任何元素
  2. @Retention 指定标记注解的存储方式
    • RetentionPolicy.SOURCE 标记的注解仅保留在源码级别中,但会被编译器忽略
    • Retention.CLASS 标记的注解在编译时由编译器保留,但会被虚拟机(JVM)忽略
    • Retention.RUNTIME 标记的注解由JVM保留,因此运行时环境可以实用它.

APT注解处理器(Annotation Processor Tools)
用于处理注解.注解处理器是javac自带的一个工具,用来在编译时期扫描处理注解信息,你可以为某些注解注册自己的注解处理器.
注册的注解处理器由javac调起,并将注解的信息传递给注解处理器进行处理.

注解处理器是对注解应用最为广泛的场景.在Glide、EventBus、ButterKnife、Tinker、ARouter等常用框架中都有使用.

CLASS
定义为class级别的注解,会被保留在class文件中,但是会被虚拟机忽略(即无法在运行期间反射获取注解).此时完全符合这种注解的应用场景为字节码操作,如:ASpect、热修复Robust

RUNTILE
注解保留到运行期间,意味着我们可以在运行期间结合反射技术获取注解中的所有信息.

http://www.lryc.cn/news/68105.html

相关文章:

  • 【Leetcode -495.提莫攻击 -496.下一个更大的元素Ⅰ】
  • 肝一肝设计模式【八】-- 外观模式
  • Maven uber-jar(带依赖的打包插件)maven-shade-plugin
  • MySQL基础(二十八)索引优化与查询优化
  • 初步认识性能测试和完成一次完整的性能测试
  • 使用插件快速生成代码
  • FE_Vue学习笔记 插槽 slot
  • 单链表的成环问题
  • 横截面收益率
  • C++解析JSON JSONCPP库的使用
  • 不会Elasticsearch标准查询语句,如何分析数仓数据?
  • 获得GitHub Copilot并结合VS Code使用
  • Java基础-判断和循环
  • ESP32 FreeRTOS学习总结
  • uniapp打包ios保姆式教程【最新】
  • Thread线程学习(2) Linux线程的创建、终止和回收
  • linux-项目部署软件安装
  • Vue3-黑马(三)
  • 标准C库函数fprintf(),sprintf(),snprintf()的函数使用方法(往文件中写入数据,将变量的值转换成字符串输出)
  • 不到1分钟,帮你剪完旅行vlog,火山引擎全新 AI「神器」真的这么绝?
  • MySQL的概念、编译安装,以及自动补全
  • Jmeter常见问题和工作中遇到的问题解决方法汇总
  • 蓝牙单连接和多连接知识
  • Mongodb—查询数据报错 Sort operation used more than the maximum 33554432 bytes of RAM
  • Java内存异常和垃圾回收机制
  • linux系统挂载逻辑卷和扩展逻辑卷组
  • WPF:WPF原生布局说明
  • SpringMVC常用注解用法
  • Liunx find locate 命令详解
  • JAVA并发专题(1)之操作系统底层工作的整体认识