2

我的 Google foo 让我失望了。如果我有一些框架可以基于注释进行代码生成,并且我希望同时支持构建时代码生成,以便开发人员可以提前编译它,还可以查看生成了什么,甚至可能修改代码,但还为更多动态应用程序(例如基于插件的应用程序)提供运行时字节码生成,我可以将 ASM 用于这两个任务,还是我真的需要使用两个不同的库对此进行两次编程?如果可能,欢迎提供示例链接。

4

2 回答 2

3

虽然这不能直接回答问题,但我建议使用Javassist而不是 ASM。

使用 Javassist,您从生成源代码开始,只需将其提供给 Javassist 编译器以将其转换为字节码,因此您现在无需任何额外技巧即可获得两者。另外,恕我直言,为 Javassist 生成源代码比处理字节码和 ASM 容易得多。

于 2012-03-26T07:18:14.593 回答
1

对于构建时代码生成,我建议使用 eclipse java 编译器,它没有为此开放的 API,但实际上非常易于使用。您可以在这里查看如何使用它:http: //git.jetbrains.org/?p=mps/mps.git;a=tree;f=core/kernel/source/jetbrains/mps/compiler; h=6787147e3b36899574f042dd2132a4c08963670e;hb=HEAD(这段代码主要是我写的)。还有一个示例说明如何动态加载已编译的类(MyClassLoader 内部类)。

于 2012-03-26T08:16:56.243 回答