通常我会在各种书中发现主要方法应该是公开的,因为它应该对类加载器可见.但是JVM执行(或提供特殊处理)各种私有方法,比如ObjectOutputStream中的readObject/writeObject方法.
我想是因为事情就是这样,Java 语言规范也是这样决定的。我可以理解为什么他们选择了 public 访问修饰符,因为您从类外部(通过命令行)调用 Java 程序,因此它符合 Java 的访问控制系统,即 main 方法应该是公共的。
如果允许 main 方法是私有的,但是您必须从其他地方调用它,例如 java 命令行,这将与 Java 的访问修饰符相反。无论技术上是否可行,这都是不一致的行为。