他的意思是你至少可以通过两种方式建立联系。给定
public class Outer {
public class Inner {
}
void f() {System.out.println(new Inner());}
}
Outer x = new Outer();
如果你打电话
x.f()
那么您打印的值是链接到的内部对象x
。
但也可以调用:
x.new Inner();
创建一个新的内部对象x
也链接到。
布洛赫说第二种方式很少见。我不知道为什么;我过去曾使用过它。
观看现场演示
class Outer {
String name;
public Outer(String name) {
this.name = name;
}
public class Inner {
public String toString() {
return "I belong to " + Outer.this.name;
}
}
void f() {
System.out.println(new Inner());
}
void g(Outer a) {
System.out.println(a.new Inner());
}
}
class Main {
public static void main(String[] args) {
Outer x = new Outer("x");
Outer y = new Outer("y");
x.f();
x.g(y);
}
}
输出:
I belong to x
I belong to y