创建一个变量来保存对象有时是多余的吗?

时间:2012-09-23 18:21:25

标签: java

我已经看过很多次了:

public class MyApp extends SomeLibrary
{
  public static void main(String[] args)
  {
    MyApp app = new MyApp();
    app.run();
  }
}

而不是:

MyApp app = new MyApp();
app.run();

为什么不这样做:

(new MyApp()).run();

当a)垃圾收集存在时,b)显然在public static void main内没有其他任何东西可以运行,而c)app显然不会被再次引用?

3 个答案:

答案 0 :(得分:4)

  • 它没有什么区别(我怀疑字节码甚至可能是相同的 - 编辑:刚刚检查过:它不是)
  • 第一种形式通常更具可读性
  • 当可读性不受影响时,第二个是有意义的 - 典型的例子:

    new Thread(someRunnable).start();
    

答案 1 :(得分:2)

是的,如果您的申请中没有其他内容,您可以将其作为

(new MyApp()).run();

但通常情况下,应用程序稍微复杂一些,并且您将实例分配给变量,因为您要进行初始化。

答案 2 :(得分:1)

除了可读性之外,两种方式之间没有区别:一些IDE实际上建议用后者替换前者。我其实更喜欢new MyApp().run();