这个问题已经在这里有了答案:




已关闭8年。






任何人都可以解释为什么以下程序的输出是“称为

public class Test4{

  public static void method(){
    System.out.println("Called");
  }

  public static void main(String[] args){
    Test4 t4 = null;
    t4.method();
  }
}

我知道我们可以使用类引用来调用静态方法,但是在这里我使用空引用来调用。请澄清我的疑问

最佳答案

在字节码中

Test4 t4 = null;
t4.method();


Test4 t4 = null;
Test4.method();

编译器将使用静态方法的类名称转换该调用。请参阅我自己问过的关于此question的信息。

10-07 22:34