嗨,这是一个基本问题,但请耐心等待。
我有两个类,在类上有另一个类的参考。我如何创建在创建第一类实例时存在于第一类中的第二类实例。是否有任何实用程序可用于此。
法典::
class A {
B b;
}
class B {
int member;
}
- In a Contructor (就像Robert Kock已经说过的那样(
class A {
B b;
public A(){
b = new B();
b.member = 5;
}
}
- 直接作为属性
class A {
B b = new B(5);
}
- 使用初始值设定项
class A {
B b;
{
b = new B();
b.member = 5;
}
}
在第一个类的构造函数中:
class A
{
public A()
{
b = new B();
}
B b;
}
甚至像这样:
class A
{
public A()
{
}
B b = new B();
}
一般的解决方案是:
public class A {
private final B b;
public A(B b) {
this.b = b;
}
}
...
A a = new A(new B());
当两个实例相互引用时,这变得很有趣,然后您需要在至少一个类中使用 setter:
public class B {
private A a; // the field cannot be final in this case
public void setA(A a) {
this.a = a;
}
}
....
B b = new B()
A a = new A(b);
b.setA(a);
类本身创建另一个实例的答案不是通用解决方案。