在Effective Java项内“项目22:偏爱非静态的静态成员类”Josh Bloch说:
非静态成员类的每个实例都与一个隐式关联 包含其包含类的实例。在非静态的实例方法中 在成员类中,您可以在封闭实例上调用方法或获取引用 使用限定的此构造到封闭实例。
合格本建筑是什么意思?
答案 0 :(得分:34)
如果没有限定符,x()
会递归。使用限定符,将调用封闭实例的x()
方法。
class Envelope {
void x() {
System.out.println("Hello");
}
class Enclosure {
void x() {
Envelope.this.x(); /* Qualified*/
}
}
}
答案 1 :(得分:9)
非静态成员类具有对封闭类的实例的隐式引用。 合格此术语是指封闭类的实例。如果封闭类为A
,内部类为B
,则可以A
将B
的封闭引用作为A.this
。