正常来说想要复制一个对象,只需要实现Cloneable接口即可
但是浅拷贝只会对你对象的基本类型进行一个新的赋值,对象中的引用类型不会,还是回调用同一个地址。所以这个时候我们需要深拷贝。
简单的深拷贝:
依然是实现Cloneable接口,在你对象.clone的基础上,你对象的引用对象也跟着clone。例如:
PptTaskDO p1 = new PptTaskDO(); p1.setCarId("1111"); p1.setTaskType(11); AreaNewRequest a = new AreaNewRequest(); a.setType(1); p1.setArea(a); PptTaskDO clone = p1.clone(); clone.area = (AreaNewRequest)a.clone();
连同引用对象也clone
复杂一点的clone:
序列化该对象,在反序列化对象即可得到一个新的对象: