2011-02-01 55 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,但该文件将被编译。

相关问题