2类,其另一类构造函数中的参数



我有A类和B类B。他们的构造函数看起来像这样:

 public A(B b) {this.b = b;}
 public B(A a) {this.a = a;}

他们两个都有另一个类的实例作为实例变量。

是否可以在不实例化的情况下创建这些类的实例?我想要A类和B类的实例。类A类的实例应将B类的实例添加为其实例变量,反之亦然。

其中一个类,让我们选择 A,需要一个方法

public void setB(B b) {
    this.b = b;
}

可以在 AB实例化之后调用。

两个类紧密耦合。如果每个类实例都需要另一个实例来初始化,则需要从一开始就对类设计进行修订。相反,要存档一个实例的目标具有另一个实例的目标,在这种情况下,使用setter将有所帮助

class A {
    private B b;
    public A(B b) { this.b = b; }
}
class B {
    private A a;
    void setA(A a) { this.a = a; }
}
B b = new B();
A a = new A(b);
b.setA(a);

最新更新