2

我正在编写一些代码,我想使用 BCEL 将所有对 SomeClass 方法的调用替换为对 SomeOtherClass 方法的调用。

现在,据我了解,我可以通过以下方式做到这一点:

  1. 遍历指令列表
  2. 查找引用 SomeClass 的所有或invokevirtual指令invokestaticinvokespecial
  3. 用引用 SomeOtherClass 的适当的 invokeX 替换那些

这需要我重写很多调用,并且我必须处理至少三种不同的情况(invokevirtualinvokestatic调用invokespecial)。相反,是否可以通过操作常量池并用 SomeOtherClass 替换指向 SomeClass 的所有常量来做到这一点?如果是这样,怎么做?

4

0 回答 0