Java 使用null调用一个方法

Java 使用null调用一个方法

你能预测以下程序的输出 吗?
在回答之前,请注意在给定的代码中,fun()是属于类的静态成员,而不是属于任何实例。

// Java program to illustrate calling
// static method using Null
public class GFG {
    public static void fun()
    {
        System.out.println("Welcome to GeeksforGeeks!!");
    }
  
    public static void main(String[] args)
    {
        ((GFG)null).fun();
    }
}
Java

输出:

Welcome to GeeksforGeeks!!
Java

解释:

这个程序看起来好像应该抛出一个NullPointerException。但是,主方法对常数null调用了greet方法(fun),而你不能对null调用方法。

但是,当你运行这个程序时,它打印出 “欢迎来到GeeksforGeeks!!”。让我们来看看是怎么回事。

  • 理解这个难题的关键在于GFG.fun是一个静态方法。
  • 虽然,在静态方法调用中使用表达式作为限定词是个 坏主意 ,但这正是这个程序所做的。
  • 不仅 表达式的值 所引用的对象的运行时类型 在决定哪个方法被调用时没有作用,而且对象的身份(如果有)也没有作用。
  • 在这种情况下,没有对象,但这并没有什么区别。一个静态方法调用的限定表达式被评估,但它的值被忽略。没有要求该值必须为非空值。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程