定义
将一个对象作为原型,以克隆拷贝的形式创建新的对象,其基础是克隆,即必须实现Cloneable
接口。
通过克隆产生对象,不会调用构造器,而是先分配内存,然后将被克隆对象的数据拷贝过来,然后将新对象的地址返回,不会调用构造器进行初始化操作。克隆方法的底层是native
方法,速度很快。
适用场景
- 类初始化消耗资源过多,构造函数复杂
- new产生一个对象时过程繁琐
- 循环体需要产生大量对象
深克隆与浅克隆
直接举例:
对于一个类A,克隆出对象B
Class A implaments Clonable{
int a;
Student student;
//省略
}
- 深克隆下,
B != A && B.student != A.student
- 浅克隆下,
B != A && B.student == A.student
要实现深克隆,Student
类也要重写clone()
方法