invokevirtual 操作を呼び出したオブジェクトの名前を知る必要があります (次の形式 - Objectname@object_id)。MethodInsnNode オブジェクトのみを指定することは可能ですか? インデックス0でローカル変数に格納されていることは知っていますが、取得方法がわかりません。
質問する
929 次
2 に答える
1
ローカル変数にアクセスするには MethodNode が必要です。
関連する MethodNode が変数mn
にあり、MethodInsnNode が格納されているinsn
場合:
InsnList insnList = mn.instructions;
int instructionIdx = insnList.indexOf(insn);
String name = null;
int wantedLocalVariableIndex = 0;
for (LocalVariableNode lvn : mn.localVariables) {
if (lvn.index == wantedLocalVariableIndex && insnList.indexOf(lvn.start) < instructionIdx && instructionIdx < insnList.indexOf(lvn.end)) {
name = lvn.name;
break;
}
}
if (name != null) {
// we found it's name
}
于 2013-02-22T22:58:05.380 に答える