从AnnotationProcessor读取字节码

时间:2009-08-31 17:33:14

标签: java annotations instrumentation

  

可能重复:
  Plugging in to Java compilers

修改 - 这似乎是Plugging in to Java compilers

的欺骗

我想实现一个AnnotationProcessor用于apt工具,该工具将在编译一个类到字节码之后调用,它可以读取和修改字节码。

这样做的原因是我想将带注释的方法翻译成另一种语言,并用调用翻译版本的存根替换java方法。

但是AnnotationProcessorEnvironment接口只提供生成新类的方法,而不是回读上一轮生成的类文件。

instrumentation API执行类似于我想要的操作,但仅限于运行时。我正在寻找一种在编译时这样做的方法。

1 个答案:

答案 0 :(得分:1)

当我想在编译器中进行一些操作时,我看了一下,但结果却使用了后处理器。

您可以使用APT操纵抽象语法树(AST),但只能使用特定于编译器的黑客。如果您想要了解如何完成,Project Lombok使用Sun javac和Eclipse编译器。目前,似乎没有更好的方法。