java—对象类的clone()方法是如何工作的?

h4cxqtbf  于 2021-07-12  发布在  Java
关注(0)|答案(2)|浏览(281)

object class clone()方法具有本机实现,该实现创建子类的示例,并将源对象的状态复制到新创建的示例。
问题:
对象类的clone()方法不调用子类的构造函数,那么它如何创建子类的示例呢?

tyu7yeag

tyu7yeag1#

克隆是以依赖于实现的方式在jvm中实现的。在openjdk中,克隆实现为 jvm_clone 在jvm.cpp的第627行。这将为对象分配内存,并从调用它的对象复制数据。
在jvm级别,创建示例和调用构造函数是两个独立的操作,因此本机实现不需要在创建示例之后调用任何构造函数。通过在c++中使用较低级别的jvm方法,它不需要调用构造函数。

ltskdhd1

ltskdhd12#

你的定义是错误的。clone()方法不创建子类的示例,而是创建调用clone()方法的类的示例。此示例包含其所有当前值。因此,它不会调用子类构造函数,但是会调用自己类的构造函数。

相关问题