1、浅拷贝
概念:子对象复制父对象,父子对象发生关联,两者属性值指向同一内存空间。简单来讲,就是改变其中一个对象,另一个对象也会跟着改变。
2、深拷贝
概念:拷贝对象各个层级的属性。简单的讲,就是复制出来的每个对象都有属于自己的内存空间,不会互相干扰。
实现方式:
-
实现Cloneable接口,并且重写Object类中的clone()方法
-
实现Serializable接口序列化
-
可以将对象序列化成JSON,也可以将JSON反序列化成对象,所以我们可以用它进行深拷贝。(注意对象自包含问题,报错信息:net.sf.json.JSONException: There is a cycle in the hierarchy;注意对象含不能直接转类型如:Date,报错信息:nested exception is net.sf.json.JSONException: java.lang.reflect.InvocationTargetException;)
-
相关所有对象的新建拷贝,比较繁琐。