http://lpaste.net/338173 的反汇编代码(使用 javap -c(如下所示: http://lpaste.net/338175 ,在第三列中,有 200 作为"sipush"的参数,如何使用 javassist 从类文件中获取它?
sipush
是一个字节码,它采用单个双字节参数,该参数是一个数字以推送到操作数堆栈。在Javassist中,你可以通过CtMethod
MethodInfo
中可用的CodeAttribute
遍历方法的所有字节码。在您的情况下,这将是第一个字节代码,但您可以检查您是否达到了 Opcode.SIPUSH
.迭代到此指令后,您可以通过迭代器中的 s16bitAt
方法读取 2 字节参数。该方法采用从零开始的索引。在您的情况下,这使得sipush
的参数为零,返回200
作为值。