将对象传递给另一个类是否会创建一个新的单独对象?

时间:2014-10-29 12:04:11

标签: java swing user-interface instance

我最近一直在乱用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);

}

}

1 个答案:

答案 0 :(得分:3)

在每个new关键字和某些特殊情况下(调用Class.newInstance方法等)创建新对象。因此,所有对象都使用PlateauJGui类的相同实例进行操作。