尚不清楚您真正要问的是什么,但是JVM规范5.2节至少涵盖了其中的一些内容:
Java虚拟机通过使用引导类加载器(第5.3.1节)创建一个初始类来启动,该类以与实现相关的方式指定。然后,Java虚拟机将链接初始类,对其进行初始化,然后调用公共类方法void
main(String
[])。该方法的调用将推动所有进一步的执行。构成主要方法的Java虚拟机指令的执行可能导致其他类和接口的链接(并因此创建),以及其他方法的调用。在Java虚拟机的实现中,可以将初始类作为命令行参数提供。或者,该实现可以提供一个初始类,该初始类设置一个类加载器,该类加载器进而加载应用程序。初始类的其他选择是可能的,只要它们与上一段中给出的规范一致即可。
该JLS
12.1节有一些其他的描述了。
JVM
main直接调用该方法-无需创建新对象即可。尽管
main方法本身必须是公共的,但声明它的类却不是。例如:
public class Test { private static class EntryPoint { public static void main(String[] args) { System.out.println("Hi"); } }}然后执行:
java 'Test$EntryPoint'
它按预期打印“ Hi”。
Test类外的任何代码都
EntryPoint.main()不能通过特权反射进行访问,也不能通过JVM明确地进行直接访问。



