Java注释

从 JDK 5 开始支持,是一种对 MetaData 的支持。

特殊标记,能够在编译、类加载、运行时被读取,并执行相应处理。

基本Annotation

1
2
3
4
5
@Override // 重写父类方法
@Deprecated // 已过时
@SuppressWarnings // 取消编译器警告
@SafeVarargs
@FunctionalInterface

元Annotation

用于注释自定义 Annotation 的 Annotation

1
2
3
4
@Retention
@Target
@Documented
@Inherited

自定义Annotation

提取 Annotation 信息

从 Java 5 开始,java.lang.reflect 包提供了读取运行时 Annotation 的能力。

所有程序元素都实现了 AnnotatedElement 接口,该接口定义了获取运行时 Annotation 的 API

1
2
3
4
Annotation getAnnotation(Class annotationClass)
Annotation[] getAnnotations()
boolean isAnnotationPresent(Class annotionClass)
Annotation getAnnotationsByType(Class annotionClass)

反射是获取注解的基础

编译时处理 Annotation

使用 APT,对源文件进行检测,根据 Annotation 生成附属源文件。

APT:Annotation Processing Tool

javac 的 -processor 指定编译时注释处理器。

javax.annotation.processing 的 Processor 接口

AbstractProcessor 抽象类。