玩命加载中 . . .

注解(52)


注解

  1. 概念:说明程序的。给计算机看的

  2. 注释:用文字描述程序的。给程序员看的
    定义:注解( Annotation),也叫元数据。一种代码级别的说明。它是JDK1.5及以后版本引入的一个特性,与类、接口、枚举是在同一个层次。它可以声明在包、类、字段、方法、局部变量、方法参数等的前面,用来对这些元秦进行说明,注释。

  3. 概念描述:

    • JDK:1.5之后的新特性

    • 为了解释程序的

    • 使用注解:@注解名称

  4. 作用分类:

    • 编写文档:通过代码里标识的注解生成文档【生成html文档】
    • 代码分析:通过代码里标识的注释对代码进行分析【使用反射】
    • 编译检查:通过代理里的标识的注解让编译器能够实现基本的编译检查【Override】
  5. JDK中预定义的一些注解:

  • @Override:检测被该注解标注的方法是否继承自父类(接口)的
  • @Deprecated:该注解标注的内容,表示已过时
  • @SuppressWarnings(“all”):压制警告(一般压制警告会在类上面声名,并且参数一般情况下是all)
  • @FunctionalInterface:该注解用于定义接口,用于检测该接口是否只有一个抽象方法。
  1. 自定义注解:

    • 格式(元注解):
      public @interface 注解名称() {

      ​ 属性列表;

      }

    • 注:注解本质上就是一个接口,该接口默认继承的是Annotation接口
      public interface MyAnno extends java.lang.annotation.Annotation {}

    • 属性:接口中的抽象方法

      1. (要求)属性值的返回类型:
        • 基本数据类型
        • String
        • 枚举
        • 以上类型的数组
      2. 定义了属性,在使用时需要给属性赋值
        • 如果定义属性时,使用default关键子给属性默认初始化值,则使用注解时,可以不进行属性的赋值
        • 如果只有一个属性需要赋值,并且属性的名称是 value,则value可以省略,直接定义值即可。
        • 数组赋值时,值使用{}包裹。如果数组中只有一个值,则{}省略。
    • 元注解:用于描述注解的注解

      1. Target:描述注解能够作用的位置
        • ElementType取值:
          • TYPE:可以作用于类上
          • METHOD:可以作用于方法上
          • FIELD:可以作用于成员变量上
        • @Retention:描述注解被保留的阶段
          • @Retention( RetentionPolicy. RUNTIME):当前被描述的注解,会保留到class字节码文件中,并被JVM读取到
        • @ Documented:描述注解是否被抽取到API文档中
        • @Inherited:描述注解是否被子类继承
  2. 在程序使用(解析)注解:

    • 获取注解定义的位置对象(Class,Method,Field)

    • 获取指定的注解

      • getAnnotation(Class)
        其实就是在内存中生成了一个该注解接口的子类实现对象

                public class ProImpl extends Pro {
                    @Override
                    public String className() {
                        return "javaee.day12.AnnotationsExercise.Dome01";
                    }
                    @Override
                    public String methodName() {
                        return "show";
                    }
                }
        
    • 调用注解中的抽象方法获取配置的属性值

  3. 小结:

    • 以后大多数时候,我们会使用注解,而不是自定义注解
    • 注解的使用:
      1. 编译器
      2. 给解析程序用(将要测试的程序使用)
    • 注解不是程序的一部分,可以理解为注解就是一个标签

文章作者: 小靳同学
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 小靳同学 !
评论
 上一篇
GUI(53) GUI(53)
GUI简介: GUI:图形用户编程。 GUI核心技术:Swing/AWT。 缺点: 界面不美观且需要jre环境。 为什么学GUI? 可以
2021-10-14
下一篇 
反射(51) 反射(51)
反射 概述:JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意一个方法和
2021-10-10
  目录