class A {
private B b = new B();
}
class B {
private A a;
public void setA(A a){
this.a = a
}
}
在启动A的实例后调用
setA
。我想这样做,因为A
有一个B
要在其中调用的方法。 最佳答案
这里A组成B。
class A {
private B b = new B();
}
B组成A:
class B {
private A a;
public void setA(A a){
this.a = a
}
}
无需设计判断,假设您需要双向依赖,则应避免使用初始化程序或构造函数来创建此类的实例,因为您需要A的实例来创建B,反之亦然。如您的示例代码中那样,以非对称方式进行此操作以某种方式隐藏了这两个类之间的关系。
因此,您可以使用设置器或工厂方法来使其更清晰。
设置方法:
class A {
private B b;
public void setB(B b){
this.b = b;
}
}
class B {
private A a;
public void setA(A a){
this.a = a
}
}
A a = new A();
B b = new B();
a.setB(b);
b.setA(a);
或者使用工厂方法,您可以根据客户的需求POV依赖于A或B类公开工厂方法:
class A{
// ...
public static A ofWithB(){
A a = new A();
B b = new B();
a.setB(b);
b.setA(a);
return a;
}
}
A a = A.ofWithB();
B b = a.getB();
关于java - 在Java中,类可以引用包含它的另一个类的实例吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/56516793/