外部类方法中,创建非静态内部类时,必须先创建外部类对象outer,再由outer.new Inner() 创建内部类对象。这是因为非静态的内部类的内部方法可以访问外部类所有成员(包括静态和非静态),而外部类的非静态属性是只有创建了外部类对象的前提下才会存在的,所以会有上述的限制。
类似的如果将内部类设置为静态内部类,那么其表现行为就类似于一个一般的外部类了,因为其只能访问外部类的静态成员,而外部类的静态成员是随着外部类的加载而存在的,故外部类中创建静态内部类对象不需要先有外部类对象存在,故可直接创建内部类对象new Inner()。