众所周知,通过
那么,我的问题是,对象何时“完全”初始化,即成为
new
字节码刚刚分配的对象没有被初始化,因此不是一个java.lang.Object
。如果我运行时修改字节码并将该对象传递给方法,JVM会发出警告甚至崩溃(因为我提供的“东西”不是java.lang.Object
)。那么,我的问题是,对象何时“完全”初始化,即成为
java.lang.Object
?它是在构造函数(<init>
)中:
- 被调用时?
- 返回时?
- 在返回之前的某个时间点?
- 调用
java.lang.Object.<init>
时? - 其他时间?