当我们编写类似Foo f = new Foo();
的语句时,我们知道JVM调用默认ClassLoader.loadClass()
,它返回Class
的实例,现在我们如何从中获取Foo
实例Class
?
答案 0 :(得分:4)
我不完全确定你在问什么,但是如果你在创建一个类的新实例时询问执行了什么代码,那么答案是这是Java虚拟机的原始操作,并且没有涉及任何Java代码。
实例创建的行为由Java语言规范的12.5. Creation of New Class Instances部分指定。
Java虚拟机规范中还有一个关于4.10.2.4. Instance Initialization Methods and Newly Created Objects的部分,但这并不是那么有趣。
要了解创建对象时实际发生的情况,您需要选择JVM实现并阅读其源代码。或者,您可能会做大多数Java程序员所做的事情,并将其视为一个本质上神奇的操作,只是有效!