我怎么能在null对象上调用方法?

Nik*_*k88 10 java core

public class JavaPuzzler {

    public static void main(String[] args) {
    JavaPuzzler javaPuzzler = null;
    System.out.println(javaPuzzler.get());
    }

    private static String get(){
        return "i am a java puzzler";
    }
}
Run Code Online (Sandbox Code Playgroud)

您可能认为它应该抛出NullPointerException,因为main方法在局部变量上调用get()方法,该方法初始化为null,并且您不能在null上调用方法.

但是如果你运行这个程序,你会看到它打印出"我是一个java puzzler".

任何人都可以给我答案.提前致谢.

Ant*_*ram 6

在您的代码示例中,get()是属于类的静态成员,而不是实例.您不需要实例来调用该方法.

public static String get() // belongs globally to class, no instance required
public String get() // belongs to instance
Run Code Online (Sandbox Code Playgroud)