2014-02-23 41 views
0

如果我有以下的Java類:使用Java的靜態方法main的任何實際區別?

public class MyClass 
{ 
    ... 

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

是否有任何實際的區別,如果我把它在以下兩種不同的方式?

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

要看是什麼構造函數... –

+1

'MyClass.main(空)'是正確的方式(靜態訪問) – 2014-02-23 22:25:06

回答

6

第一個構造函數被執行。在第二個中沒有。

+0

,並在第一個例子中的對象被分配(並且如果構造函數沒有在任何靜態屬性中保存對該對象的引用,則立即可用於垃圾收集)。 –

4

main是一個靜態函數,並且不應該通過一個實例調用。它應該只通過類的名字叫:

Stock_Image_Scanner.main(null); 

此外,null真的應該改爲new String[]{}。正如@kg_sYy所述,new方式(通過實例)執行類構造函數,這通常是意想不到的,不推薦使用。

更多信息:

+2

通過實例調用靜態方法+1只是令人困惑。 –

3

只是說同樣的事情在另一種方式:

new Stock_Image_Scanner().main(null); 

做同樣的事情:

new Stock_Image_Scanner(); 
Stock_Image_Scanner.main(null); 
相關問題