-
clone()
是Object
类的一个方法protected native Object clone() throws CloneNotSupportedException;
-
调用
clone()
的条件被复制对象的类必须
- 实现
java.lang.Cloneable
接口 - (或)其某个父类实现
Cloneable
接口 - (或)实现了
Cloneable
的子接口
如果没有满足以上条件之一就直接调用
clone()
,则会在运行时抛出CloneNotSupportedException
异常 - 实现
-
Cloneable
接口package java.lang; public interface Cloneable { }
Cloneable
是一个标记接口(marker interface),其并没有声明任何方法,只是用来标记 “可以使用clone方法进行复制”。 -
clone()
进行的是浅复制(shallow copy)clone()
会将被复制实例的字段值直接复制到新的实例中,并不考虑字段中实际所保存的内容。例如,如果字段中保存的是数组,则只会复制该数组的引用,并不会一一复制数组中的元素。
clone()
在进行复制时也不会调用被复制实例的构造函数。 -
clone()
的执行过程- 分配与要复制的实例同样大小的内存空间;
- 将要复制的实例中的字段的值复制到所分配的内存空间中去。
-
可以通过覆写
clone()
来实现自己的copy逻辑
Java clone()方法 与 Cloneable接口详解
最新推荐文章于 2023-07-23 20:13:02 发布