你應該通過你的一個類的實例,爲其他類的構造函數。
public class Main {
private final GUI gui;
Main() {
gui = new GUI(this);
}
}
public class GUI {
private final Main main;
public GUI(Main main) {
this.main = main;
}
}
你也可以使用setter而不是構造函數。我不太喜歡這個選項,因爲你失去了讓你的變量最終確定的能力。
public class Main {
private GUI gui;
Main() {
}
public void setGui(GUI gui) {
this.gui = gui;
}
}
public class GUI {
private Main main;
public GUI() {
}
public void setMain(Main main) {
this.main = main;
}
}
public static void main(String[] args) {
Main main = new Main();
GUI gui = new GUI();
main.setGui(gui);
gui.setMain(main);
}
這是正確的,但它也是你通常應該做的方法靜態的,當他們不訪問任何本地信息的情況下 - 而且,作爲Jigar喬希下面提到的,它可以使感,使之成爲單例類如果你真的只需要你的整個應用程序中的一個。 – 2012-03-20 19:34:14
但後來我有第三類RecieveThread訪問GUI類。我也需要一個物體。所以添加主參數將無法正常工作。 – 2012-03-20 19:43:15
@AhishekNandgaonkar您可以將一個GUI對象添加到RecieveThread的構造函數中。如果關係變得足夠複雜,你可能希望使用創建所有沒有實例的類,然後創建初始化每個類的setter。然後構建所有選項並調用所有setter的一段代碼。 – 2012-03-20 19:47:43