概要
浅拷贝、深拷贝都是从一个对象中new一个新的对象。区别体现在,被new的这个对象,它的变量如果是引用型的话,浅拷贝只是复制一个引用,而深拷贝是复制这个变量(重新开辟一个新的内存)。
实现方法
object存在一个clone()方法,它的调用拷贝一个对象时,如果全是基本类型,那么这次就是深拷贝。如果有的变量时引用变量的话,那么就是浅拷贝了,如何实现深拷贝呢。有以下两种方法:
- 把对象序列化,简单粗暴的直接toString,然后加一个方法能把string能还原成对象就ok。
- 通过继承Cloneable 接口,重写clone方法。比如对如果引用变量里的变量时基础类型的话,再次clone就ok