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);
類本身創建另一個實例的答案不是通用的解決方案。
添加回答
舉報