要克隆类的对象,我们实现
Cloneable
接口,并重写 clone()
方法:
protected Object clone() throws CloneNotSupportedException{
return super.clone();
}
上面
super.clone()
调用了Object的原生APIclone()
。
如果出现
Serializable
,则 instanceof
检查在 ObjectOutputStream
类中完成。同样,我试图找出编译器在哪里检查该对象是否是 Cloneable
的实例? 检查是在本地执行的吗?
如果编译器已经是
Object
类上的克隆实现,为什么编译器要检查它。例外情况与需要实现 Cloneable
来提供其他服务的其他实现相关。实际上序列化需要一个 Serializable
实现。然后,用户可以选择/调整所需的 Cloneable
实现。