繁体   English   中英

Java - 注释处理器 - 未调用方法进程

[英]Java - Annotation processor - method process not called

我正在尝试实现AnnotationProcessor 我正在关注本教程

我能够调试注释处理器,调试器转到方法: initgetSupportedAnnotationTypesgetSupportedOptionsgetSupportedSourceVersion但它不转到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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM