java拷贝(主要是拷贝对象):深拷贝和浅拷贝
浅拷贝:只拷贝原对象的地址,原对象的任何值发生改变的时候,拷贝对象的值会随之发生改变
深拷贝:拷贝原对象的所有值,原对象的值发生变化,拷贝对象的值不受影响
深拷贝方式
- 构造器方式(对象少量时可以使用,要拷贝大量对象时,开销比较大,所以不推荐)
- 重写clone方法方式
- Apache Common Lang 序列化
- Gson序列化
- Jackson序列化
重写clone方法方式——步骤
-
实现Cloneable接口,目的是告诉jvm本该允许被拷贝
-
重写Object类中的clone方法,修改clone方法的访问权限修饰符,由protected改成public
注意:重写clone方法的深拷贝默认只能对当前类进行拷贝,无法拷贝当前类所引用的类