public void main(String [] args)java main方法签名无效?

Tan*_*nvi 1 java static

我通过记事本编译了以下代码

class MainClass{
  public void main(String args[]){
    System.out.println("Hello!");

  }
}
Run Code Online (Sandbox Code Playgroud)

我没有使用static关键字和上面执行的代码,但是当我这样做时

javap MainClass
Run Code Online (Sandbox Code Playgroud)

在命令提示符下,我得到以下输出,

class MainClass {
MainClass();
  public static void main(java.lang.String[]);
}
Run Code Online (Sandbox Code Playgroud)

关键字是自己添加的,也是

public void main(String args[])
Run Code Online (Sandbox Code Playgroud)

还被认为是有效的签名?

And*_*ner 5

JLS Sec 12.1.4中所述:

该方法主要必须声明public,staticvoid.它必须指定一个形式参数(第8.4.1节),其声明的类型是数组String.


我想你可能一直在看这个课程的过时版本; 当我尝试反编译你的代码时,static还没有添加.

Compiled from "MainClass.java"
class MainClass {
  MainClass();
  public void main(java.lang.String[]);
}
Run Code Online (Sandbox Code Playgroud)