注解

发布时间 2023-04-05 23:03:52作者: Lerjiu

注解

  • 注解:也叫元数据。一种代码级别的说明。与类、接口、枚举是同一层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元素进行说明、注释。

  • 作用分类

    • 编写文档:通过代码里标识的元数据来生成文档
    • 代码分析:通过代码里标识的元数据对代码进行分析
    • 编译检查:通过代码里标识的元数据让编译器能够实现基本的编译检查
  • JDK中预定义的一些注解

    • @Override 检测被该注解标注的方法是否事继承自父类(接口)的

    • Deprecated 该注解标注的内容表示已过时

    • SuppressWarnings 压制警告

      一般传递参数all @SuppressWarnings("all")

  • 自定义注解

    • 格式

      元注解

      public @interface 注解名称{}

    • 本质:注解本质上就是一个接口

      public interface 注解名称 extends java.lang.annotation.Annotation{}

    • 属性:接口中可以定义的成员方法

      要求

      • 属性的返回值类型

        基本数据类型、String、枚举、注解、以上类型的数组

      • 在使用时要给属性赋值

        定义属性时使用default关键字给属性默认初始化值

        如果只有一个属性需要赋值,且属性的名称是value,则value可以省略,直接定义值即可

        数组赋值时,使用{}包裹。如果数组只有一个值,{}可以省略

    • 元注解

      • @Target 描述注解能够作用的位置

        ElementType取值

        TYPE:可以作用于类

        METHOD:可以作用于方法

        FIELD:可以作用于成员变量

      • @Retention 描述注解被保留的阶段

        @Retention(RetentionPolicy.RUNTIME)当前被描述的注解会保留到.class文件中,并被jvm读取到

      • @Documented 描述注解是否被抽取到API文档中

      • @Inherited 描述注解是否被子类继承

  • 在程序中使用注解:获取注解中定义的属性值

    • 获取注解定义位置的对象

    • 获取指定的注解

      getAnnotation(class)

    • 调用注解中的抽象方法获取配置的属性值