使用.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();
}
}
要想直接創建某個內部類的對象,必須使用外部類的對象來創建該內部類對象。這也解決了內部類名字作用域的問題
在擁有內部類對象之前是不可能創建內部類對象的。這是因爲內部類對會暗暗地鏈接到創建它的外部類對象上。但是如果你創建的是嵌套類(靜態內部類),那麼他就不需要對外部類對象的引用。