当前位置: 首页 > 面试题库 >

Java字节码操作库建议

杭泉
2023-03-14
问题内容

我正在寻找一个带有直观API的维护良好的Java字节码操作库。那里似乎有很多人。有什么建议可以尝试吗?


问题答案:

对您问题的最佳答案将取决于您的特定需求和目标;如果您可以扩展自己要完成的工作,那么我也许可以提供更针对性的答复。

取而代之的是,以我的经验,ASM可能提供了成熟度,灵活性和易用性的最佳组合:

  • 它的开发相对活跃:即使最新版本是2009年6月,开发人员仍会定期对其VCS进行提交。
  • 它已经在AspectJ,Groovy,Cobertura等许多著名的Java产品中得到了广泛使用,这些产品有望为广泛的用户群提供广泛的支持。
  • 它已被充分地记录在案,并且OW2联盟和整个社区都有大量的教程,用户指南和参考文档。

注意 :下面@Yuri的评论描述了我个人尚未遇到过的情况,但可能构成重大障碍。在评估各种字节码操作库时,请牢记他的观察/经验。



 类似资料:
  • 本文向大家介绍Javassist如何操作Java 字节码,包括了Javassist如何操作Java 字节码的使用技巧和注意事项,需要的朋友参考一下 一、开篇 说起 AOP 小伙伴们肯定很熟悉,无论是 JDK 动态代理或者是 CGLIB 等,其底层都是通过操作 Java 字节码来实现代理。常用的一些操作字节码的技术有 ASM、AspectJ、Javassist 等。 ASM 其设计和实现是尽可能小而

  • 我想读取一个二进制文件,并对每个字节做一些操作。我想测试我是否正确地操作了字节。我想将一个字节variable1设置为“00000000”,然后将另一个字节variable2设置为“00001111”,或者它们是newvariable=variable1variable2,将newvariable<<4位,然后打印出int值。

  • 正如文件所说: 公共接口操作码 定义JVM操作码、访问标志和数组类型代码。此接口没有定义所有JVM操作码,因为某些操作码会自动处理。例如,xLOAD和xSTORE操作码会在可能的情况下自动替换为xLOAD_n和xSTORE_n操作码。因此,xLOAD_n和xSTORE_n操作码不会在此接口中定义。LDC也是如此,必要时自动替换为LDC_W或LDC2_W、WIDE、GOTO_W和JSR_W。 问题:

  • 我必须将注释XmlElementWrapper和XmlElement添加到列表类型的字段,但是这些注释需要名称。我想把属性名设置为字段名。我愿意: 这是我的拦截器: 这是目标类的一部分: 但我有一个例外: [public static void factory.framework.SetterListInterceptor.getter(java.lang.reflect.Method)、publ

  • 问题内容: 我需要从文件中读取字节。 使用和使用之间是否有区别(例如,效率,内存,运行时,复杂性和代码的优雅程度)? 我使用的唯一方法是readByte()。 类似地,对于其它方向,是否有之间的差,并如果需要的所有被writeByte()? (双向事实不计算在内,读取和写入未连接且无法共享)。 还有其他对象更适合这种阅读和写作吗? 问题答案: 如果 您仅执行顺序访问,那么它们本质上是等效的。但是,

  • 问题内容: 使用诸如或的库,是否有一种方法可以在设置了类字段的值时将字节码指令添加到类中以执行代码? 例如,假设我有此类: 假设一段代码包含此行: 我希望此指令被拦截,因此将标志设置为。我知道这对于setter方法是可能的-因为可以通过字节码操作来修改类方法,但是我想对 字段 做同样的事情。 这可能吗?如果可以, 怎么 办? 编辑 我想避免修改访问该类的代码部分,我正在寻找一种方法来将拦截代码保留