gpt4 book ai didi

Java:如何在第三个类中创建两个不同类的实例并通过构造函数相互传递引用

转载 作者:行者123 更新时间:2023-12-01 12:47:31 26 4
gpt4 key购买 nike

这更多的是一个理论问题。假设我有3个类A、B和C。我想做的是这样的:

public class A {
B b = new B(c);
C c = new C(b);
}

public class B {
public B(C c) {

}
}

public class C {
public C(B b) {

}
}

我知道这段代码行不通。那么,还有其他方法吗?

最佳答案

有很多方法可以解决这个问题,但没有一种是理想的:

延迟构建方法:

B b = new B();   
C c = new C();
b.setC(c);
c.setB(b); // until this point, initialization is not complete

打破循环的方法:

B b = new B();   // B is not fully initialized until later
C c = new C(b);
b.setC(c); // everything set

一对一的方法:

B b = new B();   // internally initializes its 'C' instance
C c = b.getC(); // uses the C instance set by B

// inside B
public B() {
c = new C(this); // leaking 'this' in constructor, not ideal
}

然后是推荐方式(TM):

D d = new D(); // isolates what B needs from C and C needs from B
B b = new B(d);
C c = new C(d);

这是基于这样的观察:BC 通常不需要完全相互依赖 - 您可以采用公共(public)部分并将其隔离D,并分享那个

关于Java:如何在第三个类中创建两个不同类的实例并通过构造函数相互传递引用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24548246/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com