给定 Java 字节码和 ASM 字节码分析框架,
当多态调用发生时如何解析目标方法?
例如:
class ClassA {
public void foo() {…}
}
class ClassB extends ClassA {
public void foo() {…}
}
…
ClassA inst = new ClassB();
inst.foo();
为后一行生成以下字节码:
…
INVOKEVIRTUAL ClassA.foo()V
…
该结构以父方法为目标。
但实际的方法是ClassB.foo()
。
如何解决将被调用的“真实”方法?