Possible Duplicate:
Plugging in to Java compilers
编辑 - 这似乎是 Plugging in to Java compilers 的骗局
<小时/>我想实现 <a href="http://java.sun.com/j2se/1.5.0/docs/guide/apt/mirror/com/sun/mirror/apt/AnnotationProcessor.html" rel="noreferrer noopener nofollow">AnnotationProcessor</a>
与 <a href="http://java.sun.com/j2se/1.5.0/docs/guide/apt/" rel="noreferrer noopener nofollow">apt</a>
一起使用将类编译为字节码后将调用的工具,可以读取和修改字节码。
这样做的原因是我想将带注释的方法翻译为另一种语言,并用调用翻译版本的 stub 替换 java 方法。
但是<a href="http://java.sun.com/j2se/1.5.0/docs/guide/apt/mirror/com/sun/mirror/apt/AnnotationProcessorEnvironment.html" rel="noreferrer noopener nofollow">AnnotationProcessorEnvironment</a>
接口(interface)只提供生成新类的方法,不提供读回上一轮生成的类文件的方法。
检测 API 执行的操作与我想要的类似,但仅在运行时执行。我正在寻找一种在编译时执行此操作的方法。
最佳答案
当我想在编译器中进行一些操作时,我查看了一下,但最终使用了后处理器。
您可以使用 APT 操作抽象语法树 (AST),但只能使用特定于编译器的 hack。如果您想要了解如何完成此操作的示例,Project Lombok使用 Sun javac
和 Eclipse 编译器来完成此操作。目前似乎没有更好的方法。
关于java - 从 AnnotationProcessor 读取字节码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1358479/