BCEL を使用して、SomeClass のメソッドへのすべての呼び出しを SomeOtherClass のメソッドへの呼び出しに置き換えるコードを書いています。
現在、私の理解では、次の方法でこれを行うことができます。
- 命令リストの反復
invokevirtual
すべての、invokestatic
またはinvokespecial
SomeClass を参照する命令の検索- それらを SomeOtherClass を参照する適切な invokeX に置き換えます
これには、多くの呼び出しを書き直す必要があり、少なくとも 3 つの異なるケース ( と呼び出し) を処理する必要がinvokevirtual
ありますinvokestatic
。invokespecial
代わりに、定数プールを操作し、SomeClass を指すすべての定数を SomeOtherClass に置き換えることによってそれを行うことは可能ですか? もしそうなら、どのように?