1、 如果要生成对外部类对象的引用,用.this,用法如下:
1 public class DotThis { 2 void f() { 3 System.out.println("DotThis.f()"); 4 } 5 6 public class Inner { 7 public DotThis outer() { 8 return DotThis.this; // A plain "this" would be Inner's "this" 9 } 10 } 11 12 public Inner inner() { 13 return new Inner(); 14 } 15 16 public static void main(String[] args) { 17 DotThis dt = new DotThis(); 18 DotThis.Inner dti = dt.inner(); 19 dti.outer().f(); 20 } 21 }
2. 如果是在外部类的非静态方法之外的任意位置创建某个内部类的对象,那么必须要OutClassName.InnerClassName。
3. 如果要告知某些其它对象去创建内部对象,必须使用外部类的对象来创建内部类对象,在New表达式中提供对其它外部类对象的引用。必须是外围类对象.new,而不能是外围类.new 。 需要注意的是,在创建外围类对象之前,不可能创建内部类的对象(嵌套类除外)。 如下:
1 public class DotNew { 2 public void inner() { 3 DotThis dn = new DotThis(); 4 DotThis.Inner dni = dn.new Inner(); 5 } 6 }