2012-04-09 19 views
-2

Может ли кто-нибудь предоставить мне фрагмент кода простого обработчика java-аннотации, который просто печатает «foo» при вызове метода процесса. Я работал на этом в течение 2-х дней, и я не смог получить, что далекоJava AnnotationProcessor исходный код

вот мой код:


public class ComplexityProcessor extends AbstractProcessor { 

    public ComplexityProcessor() { 
     super(); 
    } 

    @Override 
    public boolean process(Set annotations, 
          RoundEnvironment roundEnv) { 
     String message = "annotation found in "; 
     processingEnv.getMessager().printMessage(javax.tools.Diagnostic.Kind.NOTE, message); 

     try { 
      JavaFileObject jfo = processingEnv.getFiler().createSourceFile("Foo"); 
      BufferedWriter bw = new BufferedWriter(jfo.openWriter()); 
      bw.append("Bar!!!"); 
      bw.close(); 
     } catch (IOException e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 
     for (Element elem : roundEnv.getElementsAnnotatedWith(Complexity.class)) { 
      Complexity complexity = elem.getAnnotation(Complexity.class); 
      message = "annotation found in " + elem.getSimpleName() 
          + " with complexity " + complexity.value(); 
      processingEnv.getMessager().printMessage(javax.tools.Diagnostic.Kind.NOTE, message); 
      try { 
       JavaFileObject jfo = processingEnv.getFiler().createSourceFile("Foo"); 
       BufferedWriter bw = new BufferedWriter(jfo.openWriter()); 
       bw.append("Bar!!!"); 
       bw.close(); 
      } catch (IOException e) { 
       // TODO Auto-generated catch block 
       e.printStackTrace(); 
      } 

     } 
     return true; // no further processing of this annotation type 
    } 
+1

Где ваш код? – Jeffrey

+0

[Переполнение стека не является написанием кода, учебным пособием или консультационной службой] (http://meta.stackexchange.com/a/128553/172496) –

+0

Здесь вы можете найти [учебник] (http: //www.javalobby. орг/Java/форум/t17876.html). – dash1e

ответ

2

я обнаружил ответ

Так что вам нужно на будущее:

  1. кувшин с процессором аннотаций и любой упомянутых аннотации, так что вы не будете иметь проблем с
  2. классам
  3. Текстовый файл в файле META-INF/services/processor с именем класса процессора. Это также идет в банке выше, где мой процессор равен
  4. Скомпилируйте с использованием аргумента javac -processor. Это то, что я искал, о котором не упоминалось в 3 или 4 учебниках, которые я изначально использовал
Смежные вопросы