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)。