您需要 (1) 制作自己的注解处理器,其 API 由JDK提供,javax.annotation.processing
并在编译期间调用它们并进行必要的检查。javax.lang.model
(2) 使用 SPI 附加它
(1) 例如,给定注解
package aptest;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
@Retention(RetentionPolicy.SOURCE)
public @interface Annotation {
Class<?> type();
}
注释处理器可能如下所示:
package aptest;
// ... imports
@SupportedAnnotationTypes({"aptest.Annotation"})
public class AnnotationProcessor extends AbstractProcessor
implements Processor {
@Override
public boolean process(Set<? extends TypeElement> annotations,
RoundEnvironment roundEnv) {
for (TypeElement te : annotations) {
for (Element e : roundEnv.getElementsAnnotatedWith(te)) {
// do your checking
}
}
return true;
}
}
(2) 当你打包你的注解处理器时(比如在 aptest.jar 中),你包含META-INF/services/javax.annotation.processing.Processor
包含注解处理器类名称的文件:
aptest.AnnotationProcessor
当您编译代码时,注释处理器将被调用。要使用它,命令行应该是这样的:
javac -cp aptest.jar SayHello.java