内部类的 .this 和 .new 关键字
1. .this
.this关键字可以在内部创建外部类的引用
public class DotThis {
void f() {System.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();
}
}
在内部类的outer方法中,通过类名DotThis.this可以返回外部类的引用;
常见的就是迭代器模式,Iterator就是一个内部类,通过itertor()方法返回内部类的实例.
2. .new
.new可以通过类的实例来直接创建内部类,因为内部类不能单独创建,必须依赖一个实例才可以创建.
public class DotThis {
void f() {System.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();
}
}
可以看到,通过dt这个外部类,直接.new就可以创建Inner内部类.