• Java注解系统学习与实战


    背景

    为什么要再次梳理一下java注解,显而易见,因为重要啊。也是为研究各大类开源框架做铺垫,只有弄清楚Java注解相关原理,才能看懂大部分框架底层的设计。

    缘起

    注解也叫做元数据,是JDK1.5版本开始引入的一个特性,用来对代码进行标记说明,可以对包、类、接口、字段、方法参数、局部变量等进行注解修饰。其本身不包含任何业务逻辑。

    一般注解大类分为三种:

    • JDK自带的相关注解
    • 自定义的注解
    • 第三方的(例如相关的框架中的注解)

    注解三步走:定义、配置、解析

    • 定义:定义标记
    • 配置:把标记打到需要用到的代码中
    • 解析:在编译器或运行时检测到标记,并进行特殊操作

    元注解

    什么是元注解?元注解的作用就是负责注解其他注解。元注解有以下五种:

    • @Retention:指定其所修饰的注解的保留策略
    • @Document:该注解是一个标记注解,用于指示一个注解将被文档化
    • @Target:用来限制注解的使用范围
    • @Inherited:该注解使父类的注解能被其子类继承
    • @Repeatable:该注解是Java8新增的注解,用于开发重复注解

    @Retention注解

    用于指定被修饰的注解可以保留多长时间,即指定JVM策略在哪个时间点上删除当前注解。

    目前存在以下三种策略

    策略值 功能描述
    Retention.SOURCE 注解只在源文件中保留,在编译期间删除
    Retention.CLASS 注解只在编译期间存在于.class文件中,运行时JVM不可获取注解信息,该策略值也是默认值
    Retention.RUNTIME 运行时JVM可以获取注解信息(反射),是最长注解持续期

    @Document注解

    @Document注解用于指定被修饰的注解可以被javadoc工具提取成文档。定义注解类时使用@Document注解进行修饰,则所有使用该注解修饰的程序元素的API文档中将会包含该注解说明。

    @Target注解

    @Target注解用来限制注解的使用范围,即指定被修饰的注解能用于哪些程序单元。标记注解方式如下:@Target({应用类型1, 应用类型2,...})【@Target(ElementType.FIELD)】

    枚举值的介绍如下:

    枚举值 功能描述
    ElementType.Type 可以修饰类、接口、注解或枚举类型
    ElementType.FIELD 可以修饰属性(成员变量),包括枚举常量
    El
  • 相关阅读:
    Linux内核网络设备驱动
    C++ Qt开发:Tab与Tree组件实现分页菜单
    金九银十求职季,Java自动化面试题分享
    QT运行错误设置弹窗提示
    第二章:数据的表示和运算
    C高级 day2
    java 代码块
    微火课堂:共享WiFi项目怎么代理,如何挑选合适的服务商?
    SSM+校园网上订餐系统 毕业设计-附源码211510
    预售拼购模式是什么?有什么优势?
  • 原文地址:https://blog.csdn.net/ch98000/article/details/126835612