gpt4 book ai didi

java - JVM是如何进行方法查找和调用的?

转载 作者:搜寻专家 更新时间:2023-11-01 03:37:33 24 4
gpt4 key购买 nike

方法在哪里?例如,

class Foo {
public void foo_test(){}
}

Foo f1 = new Foo();
f1.foo_test();

(new Foo() {
public void singleton_test(){
foo_test();
}
}).singleton_test();

方法是驻留在类中还是实例中?

JVM 是否进行方法查找(如 C++ vtable)?上面2个方法的调用是如何发生的?

我在看这个页面:

http://docs.oracle.com/javase/specs/jvms/se7/html/jvms-5.html

但它只是简要说明了查找过程,没有说明地点或任何细节。


这个问题与 Oracle JVM 特别相关。

最佳答案

除了标记为static 的方法外,Java 中的所有方法都是虚拟的。您的第二个示例只是创建了一个匿名内部类,其行为几乎与命名类完全相同。 (从这个角度来看,它的行为完全相同。)

没有指定方法查找的确切机制,这取决于 VM 实现。这也为智能优化留出了空间,例如,如果一个方法没有覆盖另一个方法并且被标记为 final,它可以决定不需要额外的间接访问。

关于java - JVM是如何进行方法查找和调用的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26105826/

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