【问题标题】:Any practical difference in the use of Java's static method main?Java的静态方法main的使用有什么实际区别吗?
【发布时间】:2014-03-25 09:21:50
【问题描述】:

如果我有以下 Java 类:

public class MyClass
{
  ...

  public static void main(String[] args) 
  {
   ...
  }
}

如果我以下面两种不同的方式调用它,有什么实际区别吗?

[1] new Stock_Image_Scanner().main(null);
[2] Stock_Image_Scanner.main(null);

【问题讨论】:

  • 取决于构造函数的作用...
  • MyClass.main(null) 是正确的方式(静态访问)

标签: java static main


【解决方案1】:

在第一个中,构造函数被执行。在第二个中它没有。

【讨论】:

  • 在第一个示例中,分配了一个对象(如果构造函数未在任何静态属性中保存对该对象的引用,则该对象立即可用于垃圾回收)。
【解决方案2】:

main 是一个静态函数,不应通过实例调用。它只能通过类名调用:

Stock_Image_Scanner.main(null);

另外,null 真的应该改成new String[]{}。正如@kg_sYy 所述,new 方式(通过实例)执行类构造函数,这通常是意料之外的,不推荐使用。

更多信息:

【讨论】:

  • +1 通过实例调用静态方法只是令人困惑。
【解决方案3】:

只是用另一种方式说同样的话:

new Stock_Image_Scanner().main(null);

做同样的事情:

new Stock_Image_Scanner();
Stock_Image_Scanner.main(null);

【讨论】:

    猜你喜欢
    • 2011-01-27
    • 2011-04-23
    • 2013-07-21
    • 1970-01-01
    • 2012-11-02
    • 1970-01-01
    • 2015-03-06
    • 2011-07-11
    • 1970-01-01
    相关资源
    最近更新 更多