使用 Javassist 获取字节码的参数

Getting the arguments for the bytecode using Javassist

http://lpaste.net/338173 looks like this: http://lpaste.net/338175 的反汇编代码(使用 javap -c),在第三列中,有 200 作为 "sipush" 的参数,我如何从 class 中获取它使用 javassist 的文件?

sipush 是一个字节码,它接受一个单独的两字节参数,该参数是一个要压入操作数堆栈的数字。在 Javassist 中,您可以通过 CtMethodMethodInfo 中可用的 CodeAttribute 遍历方法的所有字节码。在您的情况下,这将是第一个字节代码,但您可以检查是否达到 Opcode.SIPUSH。迭代到此指令后,您可以通过迭代器的 s16bitAt 方法读取 2 字节参数。该方法采用从零开始的索引。在您的情况下,这会使 sipush 的参数为零,返回 200 作为值。