什么是深拷贝和浅拷贝?
所谓的浅拷贝就是在拷贝过程中,只拷贝基本类型和引用,引用中对象的值则不会被拷贝。 对象的克隆一般都是浅拷贝,比如ArrayList的clone就是浅拷贝!而深度拷贝就是引用中对象的值也会被拷贝。
深拷贝的几种方式的比较
注意
【推荐】慎用 Object 的 clone 方法来拷贝对象。 说明:对象的 clone 方法默认是浅拷贝,若想实现深拷贝需要重写 clone 方法实现域对象的 深度遍历式拷贝【阿里巴巴Java开发手册】
如果想修改一个对象但又不想影响其他引用,可以使用clone()方法。虽然Object定义了克隆方法,但是并不是所有类都具备克隆能力。要想能够执行clone()方法,需要实现Cloneable接口。如果不实现该接口则会抛出CloneNotSupportedException异常。