当我们运行Java应用程序时,我们知道要加载的第一个对象是java.lang.Object
。但是,java.lang.Object
具有抛出异常的方法,如CloneNotSupportedException
或InterruptedException
,这反过来是其他对象。Java应用程序启动 - 如何创建第一个对象
问题是:当java.lang.Object
刚刚被加载时,如何让它的子对象(例如异常对象)被创建?
当我们运行Java应用程序时,我们知道要加载的第一个对象是java.lang.Object
。但是,java.lang.Object
具有抛出异常的方法,如CloneNotSupportedException
或InterruptedException
,这反过来是其他对象。Java应用程序启动 - 如何创建第一个对象
问题是:当java.lang.Object
刚刚被加载时,如何让它的子对象(例如异常对象)被创建?
loaded
和instantiated
是两个不同的东西。
粗糙解释:
loaded
指JVM装载的类到它的基类加载器。这使得该类可用于实例。当JVM启动时,它首先通过使用/链接的文件加载所有类,而没有实例化它们。这意味着,当第一个new Object()
创建时,Object
使用的例外已知。这仍然是一个声明。只有在引发特定异常时才会创建该异常的实例。
对于技术上是正确的解释见这@Jim驻军已经提到的链接:
谢谢!为简短回答和指导。 – Shivaprasad
请不要在这里张贴问题之前,一些研究。 https://docs.oracle.com/javase/specs/jvms/se8/html/jvms-5.html –
通过“创建”,我假设你的意思是“加载”? – shmosel
是创建意味着加载 – Shivaprasad