2014-10-29 42 views
1

最近我一直在用Java搞亂很多&我發現爲了我的目的,我需要幾個不同的對象才能夠與&進行通信實例化一個特定的類,它會生成一個GUI JFrame,其中包含所有變量,字段,等其他類需要編輯。 我發現最簡單但可能是錯誤的方法是在MainClass文件中實例化GUI類,然後當我實例化明確需要訪問GUI類中的方法和變量的其他類時,我只需傳遞GUI反對他們。將對象傳遞給另一個類是否會創建一個新的獨立對象?

我的問題是,我無法弄清楚這是否只是打開對已經創建的對象的訪問權限,或者完全創建一個新對象。在後者的情況下,然後打開幾個新的GUI對象將只是複製所有廢棄資源,而沒有任何收益,所以這就是我想要避免的。

我將在下面包含(隨意的)代碼,所以我的問題是:這是否會創建新的冗餘對象,還是隻讓其他類訪問該實例而不創建新對象?

主類代碼:

public class PlateauMainClass { 

/** 
* @param args the command line arguments 
*/ 

PlateauJGui plateauGui; 
GenerateGUI plateauGuiDataGen; 

PlateauMainClass() { 
    // Instantiate the plateauGui object, then pass it into the GUI generator. 
    // The GUI generator will generate data for the different GUI elements. 
    plateauGui = new PlateauJGui(); 
    plateauGuiDataGen = new GenerateGUI(plateauGui); 

    // Finally, makes the frame actually visible. 
    plateauGuiDataGen.makeFrameVisible(); 
} 

public static void main(String[] args) { 
    // TODO code application logic here 
    new PlateauMainClass(); 
} 

} 

分機類例如代碼:

public class GenerateGUI { 

PlateauJGui gui; 

GenerateGUI(PlateauJGui o) { 

    gui = o; 

} 

public void makeFrameVisible() { 

    gui.setVisible(true); 

} 

} 
+0

請參閱此問題http://stackoverflow.com/questions/40480/is-java-pass-by-reference-or-pass-by-value – 2014-10-29 12:07:59

+0

您是否完成了簡單的參考平等檢查? – 2014-10-29 12:10:14

+0

有趣的閱讀!謝謝=) – Tenaar 2014-10-29 12:11:27

回答

3

新對象在每new關鍵字,並且在一些特殊情況下(呼叫Class.newInstance方法等)創建的。因此,所有對象都使用PlateauJGui類的相同實例進行操作。

+0

哦,甜蜜!所以,至少我已經做了正確的事情,並且不會冒險以這種方式創建實例。感謝您的解釋! – Tenaar 2014-10-29 12:12:09

相關問題