问题:
是否存在需要使用双向一对一合成的情况(在现实生活中)?什么时候?表示 A 引用了 B,而 B 引用了同一个 A 对象。
代码:
我该如何弄清楚:
public class A {
int val;
private B b = new B(this);
public A() {
this.val = 10;
}
public void getAVal() {
System.out.println("A val = " + val);
}
public void getBVal() {
this.b.f();
}
public static void main(String[] args) {
A a = new A();
a.getAVal(); // echo 10
a.getBVal(); // echo 0
}
}
public class B {
private A a;
private int val;
public B(A a) {
this.a = a;
this.val = a.val; //WRONG! A isn't constructed yet
}
public void f() {
System.out.println("B val = " + this.val);
}
}
PS如果在某些情况下确实需要它,请告诉它有什么优点和缺点。