如果我在另一个静态方法中调用静态方法,Java 程序如何加载



我知道静态方法将在第一次访问类时首先加载。我想知道如果一个静态方法调用另一个静态方法,java 如何知道首先加载哪个静态方法。例如:

class Test{
public static void a(){
b();
System.out.println("Hello");
}
public static void b(){
System.out.println("World");
}
public static void main(String[] args){
a();
}
}

在上面的代码中,只有当 b(( 正确绑定时才能调用 a((。Java 如何知道它应该首先绑定 b((?

嘿伙计们,我想我明白我的问题在哪里,这要归功于评论。

静态方法将被编译提前绑定(或静态绑定(,但是绑定过程只会修复变量和表达式的类型,而不是检查静态方法中的已撤销方法。对于我的问题,编译器仍然会提前绑定两个方法 a(( 和 b((,但 a(( 在运行时之前不会调用 b((,因为它认为 a(( 中的 b(( 可能是一个动态绑定方法。

以上只是我的猜测。如果我的回答有进一步的错误,欢迎任何更正。

最新更新