一个内部类的问题
public class Outer {
public String name="Outer";
public static void staticMethod() {
Inner inner=new Inner();//编译不通过
Outer.Inner inner1=new Outer.Inner();//编译不通过
Inner inner2=new Outer().new Inner();//编译通过
StaticInner staticInner=new StaticInner();//编译通过
Outer.StaticInner staticInner1=new Outer.StaticInner();//编译通过
}
public void createInner(){
Inner inner=new Inner();//编译通过
Outer.Inner inner1=new Outer.Inner();//编译通过
StaticInner staticInner=new StaticInner();//编译通过
Outer.StaticInner staticInner1=new Outer.StaticInner();//编译通过
}
public class Inner{
String name=new String("Inner");
void showName(){
System.out.println(name);
}
}
public static class StaticInner{
String name=new String("Inner");
void showName(){
System.out.println(name);
}
}
}
如上所贴代码,我在外部类Outer的静态方法staticMethod() 中创建实例内部类Inner的实例时,外部类的实例必须已经存在;而在外部类的实例方法createInner()中创建实例内部类Inner的实例时,外部类的实例却不必已经存在。大家说说这到底是怎么回事?