使用null对象访问静态方法

时间:2014-08-09 08:54:43

标签: java oop

尽管从空对象dir访问方法rt,但下面的代码正在编译而没有任何错误,而我应该得到nullpointerexception。的为什么吗

当我删除 dir 方法的static关键字时,我得到了空指针异常,那么静态方法有没有异常?

public class root{

  private root() {}

   final public static void dir(int a)
    {
      System.out.print("Output: "+a);
    }
  }

public class plan{

  public root rt=null;

  public void plot(){ 
       rt.dir(1); //Calling a static method using null object
    }

  public void static main(String[] args){
     plan p1=new plan();
     p1.plot();
 }
}

2 个答案:

答案 0 :(得分:4)

静态方法未与对象链接。那些是类方法。当您致电rt.dir(1)时,JVM会将其替换为Root.dir(1)

这个实例可以为null并且可以导致NPE,但不能导致类。这就是为什么你在这里看不到NullPointerException的原因。

答案 1 :(得分:-1)

如果你想调用另一个类的静态方法,那么你必须在调用静态方法

时编写类名

您必须使用root.dir(1);