修改 - 这似乎是Plugging in to Java compilers
的欺骗我想实现一个AnnotationProcessor
用于apt
工具,该工具将在编译一个类到字节码之后调用,它可以读取和修改字节码。
这样做的原因是我想将带注释的方法翻译成另一种语言,并用调用翻译版本的存根替换java方法。
但是AnnotationProcessorEnvironment
接口只提供生成新类的方法,而不是回读上一轮生成的类文件。
instrumentation API执行类似于我想要的操作,但仅限于运行时。我正在寻找一种在编译时这样做的方法。
答案 0 :(得分:1)
当我想在编译器中进行一些操作时,我看了一下,但结果却使用了后处理器。
您可以使用APT操纵抽象语法树(AST),但只能使用特定于编译器的黑客。如果您想要了解如何完成,Project Lombok使用Sun javac
和Eclipse编译器。目前,似乎没有更好的方法。