0
我試圖處理註釋,我的處理器類擴展AbstractProcessor
和process
方法是這樣的:getAnnotation(類)的回報總是空在處理註釋
KeyAnnotationProcessor.java
@Override
public boolean process(Set<? extends TypeElement> annotations,
RoundEnvironment roundEnv) {
// Instanciation du Visitor
final KeyVisitor visitor = new KeyVisitor(processingEnv);
// On boucle sur toutes les Annotations :
for (final TypeElement declaration : annotations) {
// On "visite" chacune des déclarations trouvées :
declaration.accept(visitor,roundEnv);
}
}
正如所提供的代碼所示,我對每個註釋都使用訪問者,訪問者的代碼:
KeyVi sitor.java
public class KeyVisitor extends SimpleElementVisitor6<Void, RoundEnvironment> {
final ProcessingEnvironment env;
public KeyVisitor(final ProcessingEnvironment env) {
this.env = env;
}
@Override
public Void visitType(TypeElement e, RoundEnvironment p) {
Key cle=e.getAnnotation(Key.class);
if(cle!=null){
processingEnv.getMessager().printMessage(Diagnostic.Kind.NOTE , "OK");
}else{
processingEnv.getMessager().printMessage(Diagnostic.Kind.ERROR , "ERROR");
}
}
這是我的Key類
Key.java
@Documented
@Retention(RetentionPolicy.SOURCE)
@Target(ElementType.TYPE)
public @interface Key {
String description();
String filename();
}
這是我嘗試處理爲例,這是一個java文件:
OracleDirectory.java
@Key(description = "Oracle Directory configuration", filename = "oracle-directory")
public enum OracleDirectoryProperties {
}
的問題是,cle
總是空在Keyvisitor
visitType
,爲什麼是getAnnotation
方法總是返回null?任何幫助都會有所幫助。
「這是我的關鍵類」這是你的'OracleDirectoryProperties'類。 –
對不起,我剛剛糾正了我的文章。 – NAIT
你的處理器類是否有'SupportedAnnotationTypes'註釋? – wastl