• 注解(Annotation)


    注解

    1. 注解也被称为元数据(MateDate),用于修饰或解释包,类,方法,属性,构造器,局部变量等数据信息
    2. 和注释一样,注解不会影响程序逻辑,但是注解可以被编译或者运行,相当于嵌入在代码中的补充信息
    3. 在JavaSE中,注解的目的比较简单,例如标记重写方法,标记过时的功能,忽略警告等,JavaEE企业级开发中有比较重要的位置,

    注解使用介绍

    使用Annotation注解时,需要在前面加上@符号,且把注解当成一个修饰符使用。用于修饰它支持的程序元素

    三个基本Annotation注解

    • @Override:限定某个方法,是重写了父类的方法,该注解只能用于方法
    • @Deprecated:用于表示某个程序元素(类,方法等),表示已过时了,不建议使用
    • @SuppressWarnings:抑制编译器警告,忽略某些警告

    @Override的使用

    当子类重写了父类的每个方法时,可以使用@Override进行修饰。
    如果不使用,也不会影响重写。
    但是如果使用了,编译器会检查一下是否真的重写了。如果该方法没有重写父类的方法,则会报错

    案例演示:

    public class Father {
        public void fly(){}
    }
    class Son extends Father{
        @Override
        public void fly(){}
        //如果使用了@Override修饰,但是该方法又没有重写父类的方法,就会报错
        @Override
       // public void soor(){}
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    如果查看@Override的定义会发现是@interface,但是这里不是表示接口,而是一个注解类

    使用@Override的注意细节

    1. @Override表示指定重写父类的方法(从编译层面验证),如果父类没有该方法,则报错
    2. 不写@Override,但是子类仍然构成重写,不影响
    3. @Override只能修饰方法,不能修饰其他
    4. 查看@Override注解源代码为@Target(ElementType.METHOD)说明只能修饰方法
    5. @Target是修饰注解的注解,称为元注解

    @Deprecated的使用

    @Deprecated可以修饰:方法,类,包,参数,属性等
    来表示被修饰的元素已经过时了,不推荐使用,但是是可以使用的。
    比如在2022年的IPone4s,IPone4s就可以使用@Deprecated修饰

    被@Deprecated修饰的元素在被调用时,会有一根小线

    案例演示:
    在这里插入图片描述
    可以看到这个线条让人感觉这个元素就很low,就是个细狗。

    @Deprecated使用注意事项

    1. Deprecated用于修饰每个程序元素,表示它已过时,不建议使用
    2. 可以修饰,方法,类,属性,包等
    3. Deprecated一般用在新老版本的过渡和兼容

    @SuppressWarnings的使用

    @SuppressWarnings可以修饰在,类,方法,属性等的上面
    在写代码时,通常会碰到一些警告,比如下面的:
    在这里插入图片描述
    可能是每个类没有使用,或者是某个方法没有使用到,,,,等等的。就很烦
    所以就可以使用@SuppressWarnings({“想要忽略警告的内容”}),
    比如要忽略这个类中所有的警告就在这个类上面 @SuppressWarnings({“all”})
    在这里插入图片描述
    可以看到就没有黄色警告了。如果想要单独忽略某个方法的,就在这个方法上注解。

    可能会用到的内容:
    全部警告:@SuppressWarnings({“all”})
    没有检查的警告:@SuppressWarnings({“unchecked”})
    没有使用的警告:@SuppressWarnings({“unused”})

    元注解(了解即可)

    元注解是可以注解到注解上的注解,或者说元注解是一种基本注解,但是它能够应用到其它的注解上面。它的作用和目的就是给其他普通的标签进行解释说明的。
    比如说明 这个注解可以注解在哪些元素上面:类 方法 属性 等等。或者声明这个注解会被保留到哪个阶段等等
    java中一般有4中元注解:
    @Target 表示该注解用于什么地方
    @Retention 表示在什么级别保存该注解信息
    @Documented 将此注解包含在 javadoc 中 ,它代表着此注解会被javadoc工具提取成文档
    @Inherited 允许子类继承父类中的注解

    @Target

    这个元注解表示:注解改注解可以用在什么元素上面:
    具体可以使用在什么上可以看支持的枚举类对象
    ElemenetType.CONSTRUCTOR-----------------------------构造器声明
    ElemenetType.FIELD ----------------------------------域声明(包括 enum 实例)
    ElemenetType.LOCAL_VARIABLE------------------------- 局部变量声明
    ElemenetType.METHOD ---------------------------------方法声明
    ElemenetType.PACKAGE --------------------------------包声明
    ElemenetType.PARAMETER ------------------------------参数声明
    ElemenetType.TYPE----------------------------------- 类,接口(包括注解类型)或enum枚举声明

    @Retention

    @Retention表示该注解可以保留到哪一个阶段,java文件有三个阶段:编译阶段 class文件 JVM运行阶段
    具体支持到什么阶段可以看支持到哪一个枚举类对象:
    RetentionPolicy.SOURCE-------------注解将被编译器丢弃
    RetentionPolicy.CLASS -------------注解在class文件中可用,但会被JVM丢弃
    RetentionPolicy.RUNTIME ---------JVM将在运行期也保留注释,因此可以通过反射机制读取注解的信息

    @Documented

    表示此注解会保存到javadoc中,在提取成文档的时候可以显示内容

    @Inherited

    允许子类继承父类的注解

  • 相关阅读:
    LSM树和Elasticsearch的索引写入机制
    【Linux】32条指令带你玩转 Linux !
    21.Node-RESTful API的用法
    Anaconda安装使用以及Pycharm教程
    Linux基础指令(四)
    Talk | ICCV‘23清华大学博士生诸子钰:3D-VisTA通用统一的3D视觉语言预训练模型
    Leetcode199. 二叉树的右视图
    C++中常见的头文件
    Windows连接Samba服务时报“找不到网络名”
    初识二叉树
  • 原文地址:https://blog.csdn.net/WINorYU/article/details/128006057