我有以下幾個主要類別和主要方法:的Java傳遞兩個對象到每個人在一個步驟
public class Main {
Peter peter = new Peter(this);
Tom tom = new Tom(this);
public static void main(String[] args) {
Main main = new Main();
System.out.println(main.peter.tom);
System.out.println(main.tom.peter);
}
}
和下面的父類:
class Enemy {
//some variables
}
和下面的兩個子類:
class Tom extends Enemy {
Enemy peter;
Tom(Main main) {
this.peter = main.peter;
}
}
class Peter extends Enemy {
Enemy tom;
Peter(Main main) {
this.tom = main.tom;
}
}
當兩個打印方法運行在main方法中時,第一個打印方法返回null,因爲Tom不是creat當時它被分配到Enemy tom
。 爲了解決這個問題,我沒有在構造函數中分配Tom
和Peter
到Enemy
,而是在創建這兩個對象之後分配了一個方法。 因此,更多的是這樣的:
private void setEnemies(){
peter.tom = tom;
tom.peter = peter;
}
當方法中的println方法調用之前,它完美的作品。 我的問題是:有沒有辦法在對象創建時設置敵人,所以在創建對象之後我不必調用單獨的方法?
請注意,您所描述的問題,是因爲'彼得·彼得=新彼得(本);'是*不安全的出版物*的例子:你在'Main'被完全初始化之前,將'Main'引用傳遞給'Peter'的構造函數。這意味着'Peter'可以在處於有效狀態之前開始使用'Main'做事情,因此可能會導致意外和不可預測。 –
我知道在我當前的項目中,我從另一個類的構造函數創建了'Peter'和'Tom'。我以這種方式發佈它來簡化代碼。 –
對於'RadioButton's,只有一個'RadioButtonGroup'被添加到他們的結構/作爲工廠中完成同樣的事情。然後RadioButtonGroup確保所有單選按鈕相互關聯, –