3 回答
TA贡献1799条经验 获得超9个赞
在构造函数中(就像罗伯特·科克已经说过的那样)
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;
}
}
TA贡献1858条经验 获得超8个赞
在第一个类的构造函数中:
class A
{
public A()
{
b = new B();
}
B b;
}
或者甚至像这样:
class A
{
public A()
{
}
B b = new B();
}
TA贡献1850条经验 获得超11个赞
一般的解决方案是:
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);
类本身创建另一个实例的答案不是通用的解决方案。
添加回答
举报