实例化一个对象而不是将它分配给Java中的变量有什么意义?

时间:2012-07-30 12:06:30

标签: java

当您未将结果对象分配给引用时,new关键字的用途是什么?

这里是样本。

public static void main(String[] args) {ample.
    Display display = new Display();

    new SWTApp(display);

    display.dispose();
}

6 个答案:

答案 0 :(得分:9)

在你的情况下,很可能,构造函数有副作用(在一个线程中启动应用程序?),你只对这种副作用感兴趣。

将其视为一种调用方法的丑陋方式。

答案 1 :(得分:4)

据推测,在这种情况下,SWTApp的构造函数实际运行应用程序直到它关闭。这对我来说听起来不是一个很好的设计,但是语言中没有任何东西能够真正阻止它。

答案 2 :(得分:1)

如果您只想创建一个新对象但不需要为该对象设置任何内容,则无需将其分配给变量。

答案 3 :(得分:1)

  

当您不将结果对象分配给引用

时,new关键字的用途是什么

如果你只想调用一个类的某个方法 想要存储该对象的引用以供将来使用。在下面的例子中,我是只对调用showMessage()类的方法Display感兴趣。

public class XYTest {

    public static void main(String[] args) {
        new Display().showMessage();
    }
}

class Display {

    public void showMessage() {
        System.out.println("Hey! I am here.");
    }
}

答案 4 :(得分:0)

在Java中,new关键字用于创建对象。现在,在创建对象时会发生什么,JVM为所有成员变量和方法分配内存,并调用AND构造函数。在正常情况下,您希望将变量引用存储到某个对象,但是如果您知道新对象中的任何内容已经由构造函数完成,那么您可以进行所提到的初始化(尽管这是一种非常糟糕的做法)< / p>

例如

public class PrintFile{
public PrintFile(String fileName)
{
//code to print the file on printer or file system
}
}

现在我们可以简单地说

new PrintFile(filetoprint);

无需保存对象引用,因为工作是在构造函数本身中完成的。

答案 5 :(得分:0)

标准窗口小部件工具包(SWT)是用于Java编程语言的图形窗口小部件工具包。

无论平台如何,图形应用程序都有离散的入口点,这些入口点创建可查看的资源和排队机制,以在这些资源之间触发事件,并因此调用应用程序中的控制器对象。 (例如按钮动作事件,窗口打开事件)

您不需要保存对其中一个对象的引用这一事实并不相关,因为像这样的构造函数通常是您不需要直接处理的应用程序入口点的表示。

构造函数不操纵您传递它的对象,它接受它作为在上下文中执行应用程序的起点,可能使用您作为初始窗口或初始配置传入的初始状态。

以下是您感兴趣的构造函数的代码:

public SWTApp(Display display) {

    Shell shell = new Shell(display);
    shell.setText("Center");
    shell.setSize(250, 200);

    center(shell);

    shell.open();

    while (!shell.isDisposed()) {
      if (!display.readAndDispatch()) {
        display.sleep();
      }
    }
}

构建你的应用程序,不要担心这个,它不是用户相关的实例,它是一个应用程序入口点。顺便提一下,图形应用程序的初始构造几乎就像几乎任何语言的图形应用程序的每个其他入口点一样。

干杯!