BCELライブラリ内の特定のInvokeInstructionの呼び出し先のMethodGenを判別しようとしています。問題は、InvokeInstructionを使用して、呼び出そうとしているMethodGenに到達する方法がわからないことです。
プログラムのメインメソッド用のBCELMethodGenオブジェクトがある場合は、命令のリストを調べて、InvokeInstructionsであるものを見つけることができます。
// Assume MethodGen mainMG is given to us
Instruction[] insns = mainMG.getInstructionList().getInstructions();
for(Instruction insn : insns) {
if(insn instanceof InvokeInstruction) {
// great, found an invoke instruction
InvokeInstruction invoke = (InvokeInstruction)insn;
// what do I do with it now?
}
}
BCELのドキュメントのいくつかは素晴らしいものであり、他の部分はちょっと欠けています。InvokeInstructionを呼び出されているメソッドのMethodGenにリンクする方法についての提案はありますか?
それが物事を単純化するならば、私は今のところプログラムがポリモーフィズムを持っていないと仮定することができます。ある時点で私はそれに対処しなければならないでしょうが(保守的に)。
明確化:これを行うための直接的なルート(例
invoke.getCalledMethodGen()
)がないことはわかっていますが、invoke命令(例:メソッドのFQNまたは同等のもの)からリンクできる十分な個別の情報を取得できる方法があるかどうか疑問に思っています呼び出されているメソッドに戻ります。