【问题标题】:Class transformer in JAVA ASM - can it be generated?JAVA ASM 中的类转换器 - 可以生成吗?
【发布时间】:2012-08-14 09:39:54
【问题描述】:

我想开始使用 Java ASM 来转换我的项目中的类 - 为某些方法添加一个 String 参数并使用此参数发送日志。

asm website 我读过

如果要实现类转换器,写两个Java源码 文件(转换前后)并使用比较视图 ASMifier 模式下的插件,用于比较等效的 ASM 代码。

但我发现使用 Java ASM 非常困难。有没有可以生成class transformer的工具?这将非常有用!

【问题讨论】:

    标签: java java-bytecode-asm


    【解决方案1】:

    看看ASMifier 类。这可用于生成代码以创建字节码。 http://asm.ow2.org/doc/tutorial.html

    您可能会发现其他工具(例如 Javassist 或 BCEL)更容易完成简单任务。

    【讨论】:

    • 我听说 ASM 拥有最好的文档并且是最简单的。你推荐 Javassist 还是 BCEL?
    • 简单的事情,我会考虑。我只用过 ASM,但我的第一语言是汇编两年了。 ;)
    【解决方案2】:

    如果您使用的是 Eclipse,则应安装 Bytecode Outline - 它调用 ASMifier(Peter Lawry 在另一个答案中提到)并提供可以检查每个类或方法的视图。

    编辑(从我下面的评论中复制)
    要获得所需的转换器,请按照以下步骤操作:编写示例方法,复制代码以创建它(通过单击带有“ASM”的图标获得),将其源更改为您想要的转换,复制其输出,将它们放入差异程序中(我喜欢并推荐Diffuse)。查看 ASM 代码中的变化,将其应用到您的 ASM 转换器中。

    【讨论】:

    • 我使用Bytecode Outline。可以比较字节码,但不能生成transformer。
    • 编写一个示例方法,复制代码以创建它(您可以通过单击上面带有“ASM”的图标获得),将其源更改为您想要的转换后的样子,复制它的输出,把它们放在一个 diff 程序中(我喜欢并推荐 Diffuse)。查看 ASM 代码中的变化,将其应用到您的 ASM 转换器中。
    猜你喜欢
    • 2017-12-04
    • 2016-09-17
    • 2011-03-25
    • 1970-01-01
    • 2018-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多