外部类1
public class Outer { // 内部类 public class Inner { } // 1、外部类的非静态方法之外(成员变量) Inner inner = new Inner(); // 2、外部类的非静态方法之外(静态变量) static Inner inner2 = new Outer().new Inner(); // 3、外部类的静态方法 public static Inner staticMethod() { Inner inner = new Outer().new Inner(); return inner; } // 外部类的非静态方法 public Inner nonStaticMethod() { Inner inner = new Inner(); return inner; } }
外部类2
import com.a0000.Outer.Inner; public class Outer2 { // 5、建议这样写,这样写层次很明显(Inner是Outer的内部类) public Outer.Inner inner = new Outer().new Inner(); // 4、导入了Inner包就可以这样写了,但是不能很直观的看出来Inner是Outer的内部类 public Inner inner2 = Outer.staticMethod(); }
他那个写的不对,前3个地方是 (内部类所在的外部类)的非静态方法之外的位置创建内部类的对象
第4个地方是 其他外部类的非静态方法之外的位置创建内部类的对象
第5个地方才是他建议的写法