[英]Java - Annotation processor - method process not called
我正在尝试实现AnnotationProcessor
。 我正在关注本教程。
我能够调试注释处理器,调试器转到方法: init
、 getSupportedAnnotationTypes
、 getSupportedOptions
、 getSupportedSourceVersion
但它不转到process
方法。
我无法在互联网上找到有用的东西。 你能告诉我为什么会发生这种情况以及如何解决吗?
谢谢你。
我刚发现是为了运行process
方法。 至少有一个元素胸围使用在getSupportedAnnotationTypes
中设置的注释进行注释。
你能粘贴你的代码或项目结构吗? 使用什么类型的 Retention on annotation?
可能您使用注解的类是在处理器之前编译的。 例如
您在同一个包中有 3 个文件:
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.SOURCE)
public @interface AppFeatureRelation {
}
public class MyClass {
@MyAnnoation
Object field;
}
@SupportedSourceVersion(SourceVersion.RELEASE_11)
@SupportedAnnotationTypes("package.MyAnnotation")
@AutoService(Processor.class)
public class MyProcessor {
@Override
public boolean process(Set<? extends TypeElement> annotations, RoundEnvironment roundEnv) {
return false;
}
尝试将 MyProcessor 的名称更改为 MyAProcessor 或其他任何按字母顺序更早的名称(或只是移动到另一个包),它将在 MyClass 之前编译。
结果当编译器遇到@MyAnnotation 时应该调用 MyAProcessor.process 方法
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.