我宣布了以下类(class)
class A { //not public
public static void main(String args[]) {
System.out.println("done");
}
当我编译并运行它时,它可以正常运行并打印输出“done”。即使当我声明它在“package a”中时,也具有相同的行为;
但是,如果JVM规范要求主方法应该是公共(public)的,因为“否则它就看不到主方法”,那么它也不适用于该类吗?
如果JVM在未声明为public时“看不到” A.main(),它将如何看到类A本身。
除了“因为规范这样说”以外,对此还有什么解释吗?
最佳答案
JVM始终可以访问应用程序中的每个类,因为它的职责之一是强制执行可见性规则。因此,可以得出一个结论,即如果需要可以忽略可见性规则(例如,当用户启动应用程序时,JVM必须找到入口点,即main()
)。
换句话说,JVM不是访问此函数的类,因此可见性不适用。它基本上是监督者,负责从执行到终止的整个过程。
作为引用,请参见Execution。
关于java - 为什么包含main的类不必公开?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9640297/