2

我已经看过很多次了:

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显然不会再次被引用?

4

3 回答 3

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

    new Thread(someRunnable).start();
    
于 2012-09-23T18:23:29.007 回答
2

是的,如果您的应用程序中没有更多内容,您可以这样做

(new MyApp()).run();

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

于 2012-09-23T18:22:34.347 回答
1

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

于 2012-09-23T18:24:41.207 回答