Java 使用null调用一个方法
你能预测以下程序的输出 吗?
在回答之前,请注意在给定的代码中,fun()是属于类的静态成员,而不是属于任何实例。
输出:
解释:
这个程序看起来好像应该抛出一个NullPointerException。但是,主方法对常数null调用了greet方法(fun),而你不能对null调用方法。
但是,当你运行这个程序时,它打印出 “欢迎来到GeeksforGeeks!!”。让我们来看看是怎么回事。
- 理解这个难题的关键在于GFG.fun是一个静态方法。
- 虽然,在静态方法调用中使用表达式作为限定词是个 坏主意 ,但这正是这个程序所做的。
- 不仅 表达式的值 所引用的对象的运行时类型 在决定哪个方法被调用时没有作用,而且对象的身份(如果有)也没有作用。
- 在这种情况下,没有对象,但这并没有什么区别。一个静态方法调用的限定表达式被评估,但它的值被忽略。没有要求该值必须为非空值。