使用.this和.new
如果需要生成对外部类对象的引用,可以使用外部类的名字后边跟着圆点和this。
public class DotThis{
void f(){Syetem.out.println("DotThis.f()");}
public class Inner{
public DotThis outer(){
return DotThis.this;
}
}
public Inner inner(){return new Inner();}
public static void main(String[]args){
DotThis dt=new DotThis();
DotThis.Inner dti=dt.inner();
dti.outer().f();
}
}
有时候,你可能需要创建某些对象的内部类的对象,那么这个时候你就需要在new表达式中提供对其它外部类对象的引用,这里需要使用.new语法。
public class DotNew{
public class Inner{}
public static void main(String[] args){
DotNew dn=new DotNew();
DotNew.Inner dni=dn.new Inner();
}
}
要想直接创建某个内部类的对象,必须使用外部类的对象来创建该内部类对象。这也解决了内部类名字作用域的问题
在拥有内部类对象之前是不可能创建内部类对象的。这是因为内部类对会暗暗地链接到创建它的外部类对象上。但是如果你创建的是嵌套类(静态内部类),那么他就不需要对外部类对象的引用。