簡體   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