如果你需要生成对外部类对象的应用,可以使用外部类的名字后面紧跟圆点和this,这样产生的引用自动的具有正确的类型
public class DotClass {
void f(){System.out.println("DotClass.f()");}
public class Inner{
public DotClass outer(){return DotClass.this;}
}
public Inner inner(){return new Inner();}
public static void main(String[] args) {
DotClass ct = new DotClass();
DotClass.Inner di = ct.inner();
di.outer().f();
}
}
有时你可能需要告知某些其他对象,去创建某个内部类的对象。要实现此目的,你必须在new表达式中提供对其他外部类对象的引用,这时需要.new语法。
public class InsideNew {
public class Inner{
Inner(){
System.out.println("ccc");
}
}
//此方法替代.new
public Inner in(){
return new Inner();
}
public static void main(String[] args) {
InsideNew insideNew = new InsideNew();
InsideNew.Inner dniInner = insideNew.new Inner();
InsideNew.Inner diInner = insideNew.in();
}
}