在jdk1.4下执行为什么会报错?
public class TestInnerClass {
TestInnerClass out;
TestInnerClass.Inner in=null;
public void mainMethod() {
out=new TestInnerClass();
in=out.new Inner();
in.run();
}
class Inner{
public void run(){
outerMethod();
}
void innerMethod(){
System.out.println("innerMethod");
}
}
void outerMethod(){
System.out.println("outerMethod");
in.innerMethod();
}
public static void main(String[] args) {
new TestInnerClass().mainMethod();
}}
public class TestInnerClass {
TestInnerClass out;
TestInnerClass.Inner in=null;
public void mainMethod() {
out=new TestInnerClass();
in=out.new Inner();
in.run();
}
class Inner{
public void run(){
outerMethod();
}
void innerMethod(){
System.out.println("innerMethod");
}
}
void outerMethod(){
System.out.println("outerMethod");
in.innerMethod();
}
public static void main(String[] args) {
new TestInnerClass().mainMethod();
}}
程序执行到此方法时,在内部类调用了外部类的
outerMethod();
方法,而此时并没有外部类被实例化,导致外部类声明的变量
TestInnerClass out;
TestInnerClass.Inner in=null;
都为null,导致空指针异常
执行outerMethod()过程中会执行in.innerMethod(),而对于out来说其属性in为空(TestInnerClass.Inner in=null),这样一来,执行到in.innerMethod()时就会报空置针异常(java.lang.NullPointerException)。