【问题标题】:Combining multiple Java classes with ASM at runtime在运行时将多个 Java 类与 ASM 组合
【发布时间】:2011-12-18 04:35:49
【问题描述】:

我想将几个 java 类合并为一个。我已经阅读了 ASM 文档和 http://www.jroller.com/eu/entry/merging_class_methods_with_asm,但我无法理解如何实现我的目标。

有没有更详细的例子?

谢谢

【问题讨论】:

  • 您确定这是您想要将两个类合并在一起的方式吗?当这可能没有任何意义时,它将通过将代码添加在一起来合并两种方法。你能解释一下为什么要这样做吗?
  • 我想将几种数据类型整合为一个,只管理一种类型。
  • 在运行时将它们组合起来如何减少您的管理开销?您仍然会有多个源文件,但现在您有不受支持的部署方法。你会如何调试这样的程序?
  • 按照 Peter Lawrey 的思路,编写一个引用其他类型并提供以您需要的方式组合它们的数据的访问器方法的包装类不是更容易吗?
  • 我将使用注释来组织新的类结构,并使用策略对不同的行为进行排序。

标签: java class java-bytecode-asm


【解决方案1】:

从 java 1.5 开始,有一个称为检测的功能,它使您能够在运行时操作程序的字节码。此外,您还可以在类加载器将特定类加载到 JVM 内存时操作字节码。 ASM 框架通过将字节码汇编器转换为可读的东西并添加一些实用程序来简化您的工作,为您提供了轻松操作字节码的工具。请注意,操作字节码是一种非常先进的技术,在操作之前您确实需要了解 JVM 和字节码。 我个人建议你按照上面出现的想法去做。但如果您仍然坚持这样做,我建议您在此处阅读有关仪器的信息:http://www.javalobby.org/java/forums/t19309.html 而不是深入了解 ASM 或 javaassist 框架:http://sleeplessinslc.blogspot.co.il/2008/07/java-instrumentation.html 我认为 java 辅助更容易我建议使用它。 希望能帮到你

【讨论】:

    猜你喜欢
    • 2020-07-04
    • 1970-01-01
    • 2018-01-06
    • 1970-01-01
    • 2014-11-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多