【发布时间】:2012-04-09 14:28:45
【问题描述】:
谁能给我一个简单的java注释处理器的代码sn-p,当它的process方法被调用时,它只打印“foo”。我已经在这方面工作了 2 天,但我还没能走到那一步
这是我的代码:
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
}
【问题讨论】:
-
在这里您可以找到tutorial。
-
网上有很多创建注解处理器的例子。您是使用 Java 6 可插入注释处理器尝试过,还是使用了 Java 5 的 apt 工具?您是在 IDE 中尝试还是使用 javac?
-
我正在处理这个 3 部分系列:deors.wordpress.com/2011/09/26/annotation-types
-
dash1e 您发布的教程是从 2005 年开始的。据我所知,自那以后 APT 发生了很多变化
标签: java annotations