java中的合法主方法签名

Rav*_*avi 8 java program-entry-point signature main-method

class NewClass{
public static void main(String a){
    System.out.print("Hello");
}
}
Run Code Online (Sandbox Code Playgroud)

当我尝试执行上面的代码时,它会显示错误,找不到主要方法.但是,当我换public static void main(String a)public static void main(String... a)public static void main(String a[]).然后,它的工作.. !!

那么,我的问题是我们可以用多少种不同的方式来编写法律主要方法签名以及这个签名public static void main(String... a)意味着什么?

And*_*yle 11

仅仅因为这是Java的要求.

程序的主要方法/入口点必须是声明为的方法public static void main(String[] args).使用String参数声明的方法类似但不兼容.

一个数组与单个String不同 - 如果有人用三个命令行参数调用Java,JVM会创建一个三元素字符串数组,然后如何将它传递给只需要一个字符串的方法?

因此,在这种情况下,您尝试基于没有主方法充当入口点的类来启动Java程序.

(之所以可行,String...是因为这是数组参数的语法糖,并编译为具有相同签名的方法.)