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