Java_注解

111 阅读1分钟

ch14_Annotation(注解)

参考学习源码:Annotation(注解)

从Jdk5开始,Java增加了对元数据(MetaData)的支持,也就是Annotation。其实就是代码里的特殊标记,这些标记可以在编译、类加载、运行时被读取,并执行相应的处理。

14.1 基本Annoation

  • 限定重写父类方法:@Override
  • 标示已过时:@Deprecated
  • 抑制编译器警告:@SuppressWarnings
  • Java7的“堆污染”警告与@SafeVarargs
  • Java8的函数式接口与@FunctionalInterface

14.2 JDK的元Annotation

  • 使用@Retention
    包含一个RetenionPolicy类型的value成员变量:
    RetentionPolicy.CLASS——编译器将Annotation记录在class文件中。当运行java程序时,JVM不可获取Annotation信息,这是默认值。
    RetentionPolicy.RUNTIME——程序可以通过反射获取该Annotation信息。
    RetentionPolicy.SOURCE——Annotation只保留在源代码中,编译器直接丢弃这种Annotation.
  • 使用@target
    ElementType.FIELD——只能修饰成员变量
    ElementType.METHOD——只能修饰方法定义
    ElementType.TYPE——可以修饰类、接口或枚举定义。
  • 使用@Documented
  • 使用@Inherited

14.3 自定义Annotation

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