为什么必须声明main方法public ...为什么JVM不可能执行私有main方法

Ash*_*ish 6 java

通常我会在各种书中发现主要方法应该是公开的,因为它应该对类加载器可见.但是JVM执行(或提供特殊处理)各种私有方法,比如ObjectOutputStream中的readObject/writeObject方法.

Gia*_*ann 6

很明显,程序的入口点应该是可见的.


pla*_*nes 2

我想是因为事情就是这样,Java 语言规范也是这样决定的。我可以理解为什么他们选择了 public 访问修饰符,因为您从类外部(通过命令行)调用 Java 程序,因此它符合 Java 的访问控制系统,即 main 方法应该是公共的。

如果允许 main 方法是私有的,但是您必须从其他地方调用它,例如 java 命令行,这将与 Java 的访问修饰符相反。无论技术上是否可行,这都是不一致的行为。