• 枚举和注解05:注解


    注解

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

    @Override

    请添加图片描述

    • 1、@Override注解放在fly方法上,表示子类的fly方法时重写了父类的fly

    • 2、这里如果没有写@Override还是重写了父类fly

    • 3、如果你写了 @Override注解,编译器就会去检查该方法是否真的重写了父类的方法,如果的确重写了,则编译通过,如果没有构成重写,则编译错误。
      其实就是语法校验

    • 4、看看@Override的定义

      解读:如果发现 @interface 表示一个 注解类
      @Target(ElementType.METHOD)
      @Retention(RetentionPolicy.SOURCE)
      public @interface Override {
      }

    • 5、@Target是修饰注解的注解,称为元注解,记住这个概念。

    package com.annotation;
    
    import org.w3c.dom.ls.LSOutput;
    
    /**
     * @version 1.0
     * @anther 田毅
     */
    public class Override {
        public static void main(String[] args) {
    
        }
    }
    class Father{
        public void fly(){
            System.out.println("father fly");
        }
    
    }
    class Son extends Father{
    
        //1、@Override注解放在fly方法上,表示子类的fly方法时重写了父类的fly
        //2、这里如果没有写@Override还是重写了父类fly
        //3、如果你写了 @Override注解,编译器就会去检查该方法是否真的重写了父类的方法,
        //如果的确重写了,则编译通过,如果没有构成重写,则编译错误。
        //其实就是语法校验
        //4、看看@Override的定义
        /*
        解读:如果发现 @interface 表示一个 注解类
    
        @Target(ElementType.METHOD)
        @Retention(RetentionPolicy.SOURCE)
        public @interface Override {
        }
         */
        //5、@Target是修饰注解的注解,称为元注解,记住这个概念。
        @java.lang.Override
        public void fly(){
            System.out.println("Son fly");
        }
    
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35
    • 36
    • 37
    • 38
    • 39
    • 40
    • 41
    • 42

    @Deprecated_

    请添加图片描述

    • 1、Deprecated修饰某个元素,表示该元素已经过时
    • 2、即不在推荐使用,但是仍然可以使用
    • 3、查看 @Deprecated注解类的源码

    /*
    @Documented
    @Retention(RetentionPolicy.RUNTIME)
    @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, MODULE, PARAMETER, TYPE})
    public @interface Deprecated {}
    */

    • 4、@Deprecated_可以修饰方法,类,字段,包,参数等等
    • 5、@Deprecated_可以做版本升级的过渡使用
      请添加图片描述
    package com.annotation;
    
    /**
     * @version 1.0
     * @anther 田毅
     */
    public class Deprecated_ {
        public static void main(String[] args) {
            A a = new A();
            System.out.println(a.hi(););
        }
    }
    @Deprecated
    class A {
        public int n1 = 10;
        @Deprecated
        public void hi(){
    
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    @SuppressWarnings

    请添加图片描述

    • 1、当我们不希望看到这些警告的时候,可以使用 SuppressWarnings注解来抑制警告信息。
    • 2、在{“"}中,可以写入你希望抑制(不显示)警告信息!
    • 3、可以指定的警告类型有

    all:抑制所有警告
    boxing:抑制与封装/拆装作业相关的警告
    cast:抑制与强制转型相关的警告
    dep-ann:抑制与淘汰注释相关的警告
    deprecation:抑制与淘汰相关的警告
    fallthrough:抑制与switch陈述式中遗漏break相关的警告
    finally:抑制与未传回finally区块相关的警告
    hiding:抑制与隐藏变数的区域变数相关的警告
    incomplete-switch:抑制与switch陈述式(enum、case)中遗漏项目相关的警告
    javadoc:抑制与javadoc相关的警告
    nls:抑制与非nls字符串文字相关的警告
    null:抑制与空值分析相关的警告
    rawtypes:抑制与使用raw类型相关的警告
    resource:抑制与使用Closeable类型的资源相关的警告
    restriction:抑制与使用不建议或禁止参照相关的警告
    serial:抑制与可序列化的类别遗漏serialVersionUID栏位相关的警告
    static-access:抑制与静态存取不正确相关的警告
    static-method:抑制与可能宣告为static的方法相关的警告
    super :抑制与置换方法相关但不含super呼叫的警告
    synthetic-access:抑制与内部类别的存取未最佳化相关的警告
    sync-override:抑制因为置换同步方法而遗漏同步化的警告
    unchecked:抑制与未检查的作业相关的警告
    unqualified-field-access:抑制与栏位存取不合格相关的警告
    unused:抑制与未用的程序码及停用的程序码相关的警告

    • 4、关于SuppressWarnings作用范围是和你放置的位置有关
      比如,放置在main方法,那么抑制警告的范围就是在main方法
    • 5、源码
      • 1)放置的位置就是TYPE. FIELD.METHOD.PARAMETER, CONSTRUCTOR, LOCAL_VARIABLE
      • 2)该注解类有数组 String[] values()设置一个数组比如{" rawtypes"," unchecked"," unused"}

    @Documented
    @Retention(RetentionPolicy.RUNTIME)
    @Target(value={CONSTRUCTOR, FIELD, LOCAL_VARIABLE, METHOD, PACKAGE, MODULE, PARAMETER, TYPE})
    public @interface Deprecated {
    String[] value();
    }

    元注解(了解即可)

    请添加图片描述

    @ Retention注解请添加图片描述

    请添加图片描述
    请添加图片描述

    @Target

    请添加图片描述
    请添加图片描述

    @Documented

    请添加图片描述
    请添加图片描述

    @ Inherited注解

    请添加图片描述

  • 相关阅读:
    基于JavaSwing开发推箱子小游戏(不同版) 课程设计 大作业源码
    Zabbix之部署代理服务器
    MinGW、GCC、GNU和MSVC是什么?有什么区别?
    深入解析 const 关键字:指针、参数、返回值和类成员函数
    SQL比较两次的字段集合,找出并返回差异,主要用于更新记录事件
    Linux安装Zookeeper详细步骤
    python带你对北京二手房进行数据分析,看看大概都什么价位
    初识C语言(三)--最终章,万字解析,趣味讲解完C语言的最后知识点
    基于 ECharts的Python 数据可视化库,它允许用户使用 Python 语言生成各种类型的交互式图表和数据可视化
    医院陪诊小程序源码 医院陪诊陪护系统源码
  • 原文地址:https://blog.csdn.net/tianyi520jx/article/details/126443675