2

ASM 和 Javassist 在生成/转换 Java 字节码方面似乎有不同的优点和缺点。例如,Javassist 的字节码生成工具非常易于使用,因为它就像在字符串中生成程序并即时编译一样简单。但是,有时 ASM 的访问者方法对于其他类型的任务(例如,将 Java 例程翻译成另一种语言)似乎更方便。

是否可以在同一个 Java 项目中使用这两个库,以便我可以根据每个不同场景的要求从最方便的库中获益?有什么特别的注意事项要记住吗?我有直觉,我不能使用这两个库来操作同一类的字节码,但也许这也是可能的?

4

1 回答 1

1

从常识来看,如果你费心学习 ASM 和低级 Java 字节码,那么 Javassist 就显得有些多余了。但从实际的角度来看,没有什么能阻止你同时使用这两种方法。如果我没记错的话,Hibernate 就是这样做的。

至于在同一个类上使用 ASM 和 Javassist,无需深入每个框架 API 的细节,如果您只使用字节数组,您可以使用一个工具加载和转换,获取结果字节数组并使用另一个框架来处理字节数组。

于 2012-10-24T15:43:06.323 回答