【发布时间】:2012-08-14 09:39:54
【问题描述】:
我想开始使用 Java ASM 来转换我的项目中的类 - 为某些方法添加一个 String 参数并使用此参数发送日志。
在asm website 我读过
如果要实现类转换器,写两个Java源码 文件(转换前后)并使用比较视图 ASMifier 模式下的插件,用于比较等效的 ASM 代码。
但我发现使用 Java ASM 非常困难。有没有可以生成class transformer的工具?这将非常有用!
【问题讨论】:
我想开始使用 Java ASM 来转换我的项目中的类 - 为某些方法添加一个 String 参数并使用此参数发送日志。
在asm website 我读过
如果要实现类转换器,写两个Java源码 文件(转换前后)并使用比较视图 ASMifier 模式下的插件,用于比较等效的 ASM 代码。
但我发现使用 Java ASM 非常困难。有没有可以生成class transformer的工具?这将非常有用!
【问题讨论】:
看看ASMifier 类。这可用于生成代码以创建字节码。 http://asm.ow2.org/doc/tutorial.html
您可能会发现其他工具(例如 Javassist 或 BCEL)更容易完成简单任务。
【讨论】:
如果您使用的是 Eclipse,则应安装 Bytecode Outline - 它调用 ASMifier(Peter Lawry 在另一个答案中提到)并提供可以检查每个类或方法的视图。
编辑(从我下面的评论中复制)
要获得所需的转换器,请按照以下步骤操作:编写示例方法,复制代码以创建它(通过单击带有“ASM”的图标获得),将其源更改为您想要的转换,复制其输出,将它们放入差异程序中(我喜欢并推荐Diffuse)。查看 ASM 代码中的变化,将其应用到您的 ASM 转换器中。
【讨论】:
Bytecode Outline。可以比较字节码,但不能生成transformer。