【发布时间】:2014-09-09 07:05:05
【问题描述】:
我们用 Java 编写了一个简单的 PostScript 解释器,并希望通过直接为源代码的特定部分生成字节码来优化它。为此,我们需要从 Java 字节码上下文的上下文中加载对象。在生成的字节码方法的签名中指定这样的对象是不好的,因为在我们的例子中它们可能是大量的。
在 Java Asm 中我们有方法
public void visitLdcInsn(Object cst)
它访问一条 LDC 指令。参数 cst - 要加载到堆栈上的常量。
有没有办法加载非常量对象?
谢谢
【问题讨论】:
-
有 Unsafe.defineAnonymousClass(),但它是黑魔法。最后一个参数允许您使用任意对象“修补”常量池并通过 LDC 加载它们
-
你想要完成什么?根据定义,LDC 只能用于常量。
标签: java bytecode java-bytecode-asm bytecode-manipulation