尽管从空对象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();
}
}
答案 0 :(得分:4)
静态方法未与对象链接。那些是类方法。当您致电rt.dir(1)
时,JVM会将其替换为Root.dir(1)
。
这个实例可以为null并且可以导致NPE,但不能导致类。这就是为什么你在这里看不到NullPointerException
的原因。
答案 1 :(得分:-1)
如果你想调用另一个类的静态方法,那么你必须在调用静态方法
时编写类名您必须使用root.dir(1);