• Java注解(Annotation)与元注解


    1)注解(Annotation)也被称为元数据(Metadata),用于修饰解释包、类、方法、属性、构造器、局部变量等数据信息。
    2)和注释一样,注解不影响程序逻辑,但注解可以被编逢或运行,相当于嵌入在代码中的补充信息。
    3)在JavaSE中,注解的使用目的比较简单,例如标记过时的功能,忽略警告等。
    在JavaEE中注解占据了更重要的角色,例如用来配置应用程序的任何切面,代替java EE 旧版中所遗留的繁冗代码和XML配置等。

    基本的Annotation介绍

    使用Annotation时要在其前面增加@符号,并把该Annotation当成一个修饰符使用。用于修饰它支持的程序元素
    三个基本的Annotation:

    @Override

    限定某个方法,是重写父类方法,该注解只能用于方法. crtl点进去之后还可以看到@interface, @interface不是interface, 是注解类, 是jdk1.5之后加入的

    image-20221117174625863

    image-20221117175839183

    ➢Override使用说明

    @Override表示指定重写父类的方法(从编译层面验证) ,如果父类没有fly方法,则会报错

    如果不写@Override注解,而父类仍有public void fly({} ,仍然构成重写

    @Override只能修饰方法,不能修饰其它类,包,属性等等

    查看@Override注解源码为@Target(ElementType.METHOD),说明只能修饰方法

    @Target是修饰注解的注解,称为元注解

    @Deprecated

    用于表示某个程序元素(类,方法等)已过时, 可以修饰方法,类,字段,包,参数等等, @Deprecated的作用可以做到新旧版本的兼容和过渡.

    image-20221117181503233

    @SuppressWarnings

    抑制编译器警告

    ➢说明各种值

    1. unchecked是忽略没有检查的警告
    2. rawtypes是忽略没有指定泛型的警告(传参时没有指定泛型的警告错误)
    3. unused是忽略没有使用某个变量的警告错误
    4. @SuppressWarnings可以修饰的程序元素为,查看@Target
    5. 生成@SupperssWarnings时,不用背,直接点击左侧的黄色提示,就可以选择(注意可以指定生成的位置)
    JDK的元Annotation

    JDK的元Annotation用于修饰其他Annotation元注解:
    本身作用不大,讲这个原因希望同学们,看源码时,可以知道他是干什么,

    元注解的种类(使用不多,了解,不用深入研究)

    Retention //指定注解的作用范围,三种SOURCE,CLASS,RUNTIME

    ➢说明
    只能用于修饰一个Annotation定义,用于指定该Annotation可以保留多长时间,
    @Rentention包含一个RetentionPolicy类型的成员变量,使用@Rentention时必须为该value成员变量指定值:

    ➢@Retention的三种值

    1. RetentionPolicy.SOURCE编译器使用后,直接丢弃这种策略的注解
    2. RetentionPolicy.CLASS:编译器将把注释记录在class文件中.当运行Java程序时,JVM不会保留注解。这是默认值
    3. RetentionPolicy.RUNTIME:编译器将把注释记录在class文件中.当运行Java程序时,JVM会保留注解.程序可以通过反射获取该注解
    Target //指定注解可以在哪些地方使用

    ➢基本说明
    用于修饰Annotation定义,用于指定被修饰的Annotation能用于修饰哪些程序元素. @Target也包含一个名为value的成员变量。

    image-20221117195528825

    Documented //指定该注解是否会在javadoc体现

    ➢基本说明
    @Documented:用于指定被该元Annotation修饰的Annotation类将被javadoc工具提取成文档,即在生成文档时,可以看到该注释。
    说明:定义为Documented的注解必须设置Retention值为RUNTIME。

    Inherited //子类会继承父类注解

    被它修饰的Annotation将具有继承性如果某个类使用了被@Inherited修饰的Annotation,则其子类将自动具有该注解
    说明:实际应用中,使用较少,了解即可。

    元注解本身作用不大,讲这个原因希望同学们,看源码时,可以知道他是干什么的

  • 相关阅读:
    Flink安装和演示
    Docker原生网络、自定义网络、Docker容器通信、跨主机容器网络
    408王道计算机组成原理强化——输入输出系统大题(I/O)
    我的云服务器初始化配置
    Mysql DateTime 问题
    【Mysql】InnoDB 中的聚簇索引、二级索引、联合索引
    javaEE7
    C语言基础
    解决 webpack 配置 sass-loader后报错,无法正常build
    GO数组解密:从基础到高阶全解
  • 原文地址:https://blog.csdn.net/Drifter_Galaxy/article/details/127918018