2011-02-01 52 views

回答

4

不,你不能。你將如何指定命令行參數以適應二維數組? main(..)方法由java運行時調用,該運行時傳遞程序調用時指定的命令行參數。

3

當然,你可以聲明,需要一個二維數組自己的主要方法,但它不會自動在啓動時JVM,因爲它看起來與一個簽名的方法執行:

有關主要方法的更多信息,請參閱Hello World tutorial

0

沒有你can't.because主(字符串[] args)方法是JVM特殊的方法,它在尋找

與此簽名主要方法:

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

有三種可能的方式您可以定義的主要方法的參數:

  1. 經典的Java風格

    public static void main(String[] args) 
    
  2. 空調風格

    public static void main(String args[]) 
    
  3. 新學校(後JDK1.5)的Java風格

    public static void main(String ... args) 
    

所有這些都是等價的,而虛擬機纔開始你的類如果它找到具有這些簽名之一的方法。


其實,他們都不太等價的,有一個小的差異:當通過反射訪問,Method.isVarArgs()將只爲最後一個方法返回true。但是他們仍然都有平等的簽名(名稱,參數類型,返回類型,能見度)

1

兩個主要的事實,其他問題指出:

  • 您可以與簽名的方法。
  • 它不能用作入口點。

所以,如果你真的想接受一個二維數組的切入點,你應該這樣做:

public static void main(String[] args) { 
    String[][] args2d; 
    // some crazy code that parses args and initializes args2d with a 2D array 
    main(args2d); 
} 

public static void main(String[][] args) { 
    // your actual entry point here 
} 

請注意,您不必在這種情況下申報的第二個方法公開,但如果你真的想要的話,你仍然可以做到。

0

沒有二維數組將不會工作。當您使用String args []意味着您要將字符串參數數組發送到編譯器,但不能使用二維數組。 您將獲得Class not found exception,但該文件將被編譯。

相關問題