• Annotation 注解


    jdk5开始,java增加了对元数据MetaData的支持,也就是Annotation,是代码里的特殊标记,可以在编译,类加载,运行时被读取,并执行相应的处理。通过注解,开发人员可以在不改变原有逻辑的情况下,在源文件中嵌入补充一些信息。代码分析工具、开发工具、部署工具可以通过这些补充信息进行验证或者进行部署

    Annotation提供了一种为程序元素设置元数据的方法,就像修饰符一样,可以用于修饰包,类,构造器,成员变量,方法参数,局部变量的声明,这些信息被存储在Annotation的“name=value”对中

    Annotation不影响程序代码的执行,如果希望Annotation在程序运行时起到一定作用,只有通过某种配套工具对Annotation中的信息进行访问和处理,这些工具统称为APT(Annotation Processing Tool)

    5个基本的Annotation用法,都定义在java.lang包下:

      @Override:限定重写父类方法,强制一个子类必须覆盖重写父类的方法,@Override作用是告诉编译器检查这个方法,保证父类要包含一个被该方法重写的方法,否则编译出错。可以防止低级错误,比如方法名写错

      @Deprecated:标示已过时,用于表示某个程序元素(类,方法等)已过时,当其他程序使用已过时的类、方法时,编译器会给出警告

      @SuppressWarnings:抑制编译器警告,被修饰的程序元素以及他的所有子元素,取消显示指定的编译器警告

      @SafeVarags:java7新增的“堆污染”警告,当把一个不带泛型的对象赋给一个带泛型的变量时,容易发生“堆污染”,可以用来抑制

      @FunctionalInterface:java8新增的函数式接口,如果接口中只包含一个抽象方法(可以包含多个默认方法或static方法),该接口就是函数式接口,@FunctionalInterface用来指定某个接口必须是函数式接口,告诉编译器检查接口,保证接口只能包含一个抽象方法,否则编译出错。可以防止低级错误

    JDK还在java.lang.annotation包下提供了6个Meta Annotation元Annotation

    自定义Annotation:使用@interface关键字

      public @interface Test{。。。}  使用@Test

    获得Test类的info方法里的所有注解并遍历打印:

      Annotatcion[] a = Class.forName("Test").getMethod("info").getAnnotation();

      for(Annotation an : a){System.out.println(an);}

    获得tt对象的info方法包含的注解:

      Annotation aa = tt.getClass().getMethod("info").getAnnotation();

  • 相关阅读:
    Java 第十一届 蓝桥杯 省模拟赛 螺旋矩阵
    Java 第十一届 蓝桥杯 省模拟赛 螺旋矩阵
    Java 第十一届 蓝桥杯 省模拟赛 正整数的摆动序列
    Java 第十一届 蓝桥杯 省模拟赛 正整数的摆动序列
    Python abs() 函数
    Python数学常量
    Python三角函数
    Python随机数函数
    Python数学函数
    语义分割模型优化
  • 原文地址:https://www.cnblogs.com/zawjdbb/p/7152788.html
Copyright © 2020-2023  润新知