在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();
}}

解决方案 »

  1.   

    in.run();
    程序执行到此方法时,在内部类调用了外部类的
    outerMethod();
    方法,而此时并没有外部类被实例化,导致外部类声明的变量
    TestInnerClass out;
    TestInnerClass.Inner in=null;
    都为null,导致空指针异常
      

  2.   

    in=out.new Inner()说明in是out的内嵌类对象,在in.run()中执行outerMethod()实际上是调用out.outerMethod()。
    执行outerMethod()过程中会执行in.innerMethod(),而对于out来说其属性in为空(TestInnerClass.Inner in=null),这样一来,执行到in.innerMethod()时就会报空置针异常(java.lang.NullPointerException)。