0

是关于 INVOKESPECIAL 字节码指令的参考。如果我有一个来自 ASM 框架的 AbstractInsnNode 包含 INVOKESPECIAL 指令,我的节点会包含指令的方法规范吗?例如,使用这样的代码:

String ins = insn.toString;

如果 insn 有一个 INVOKESPECIAL 指令,我的 ins 会有一个类似“invokespecial java/lang/StringBuffer/()V”的字符串?

我想做的是从 INVOKESPECIAL 指令中获取方法规范并将其存储在字符串中,以便我的程序可以读取它。

4

2 回答 2

0

如果我有一个来自 ASM 框架的 AbstractInsnNode 包含 INVOKESPECIAL 指令,我的节点会包含指令的方法规范吗?

AFAIK,是的。它应该是一个实例,MethodInsnNode并且该desc字段应该是一个方法描述符字符串。

如果 insn 有一个 INVOKESPECIAL 指令,我的 ins 会有一个类似“invokespecial java/lang/StringBuffer/()V”的字符串?

实际上,有三个组成部分。方法描述符字符串、方法名称和拥有(在本例中为实际)方法的类的内部名称。

于 2013-01-14T03:14:11.240 回答
0

您想在运行时阅读课程吗?尝试这个

    import org.objectweb.asm.ClassReader;
    import org.objectweb.asm.util.ASMifierClassVisitor;


    ClassReader cr = new ClassReader(b);
    cr.accept(new ASMifierClassVisitor(new PrintWriter(System.out)), 0);
于 2013-01-14T02:57:41.330 回答