[英]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.