gpt4 book ai didi

java - 多态调用: resolving target method from bytecode

转载 作者:行者123 更新时间:2023-11-30 04:56:53 24 4
gpt4 key购买 nike

给定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()

如何解析将被调用的“真实”方法?

最佳答案

一般来说:你不能。这是无法确定的。但也有特殊情况可以分析。一种方法是应用 points-to-analysis 。这通常是整个程序分析。在存在字节码重写和/或反射的情况下,会出现其他问题。

所以基本上你必须决定你愿意花费多少努力。您有以下选择:

  • 您执行一项临时分析,这将能够从上面检测您的琐碎案例。
  • 您将大量静态分析理论应用于这个问题。
  • 您发现其他人已经执行了第二个选项。

您首先想要实现什么?

关于java - 多态调用: resolving target method from bytecode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8258665/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com