为什么要克隆
首先思考一个问题, 为什么需要克隆对象? 直接new一个对象不行吗?...简单说, 浅克隆仅克隆当前对象, 而不克隆当前对象所引用的对象.
深克隆:
被克隆的对象里的所有变量值都与原来的对象相同, 那些引用其他对象的变量将指向被复制过的新对象, 而不再是原来被引用的对象....简单说, 深克隆不仅克隆了当前对象, 还把当前对象所引用的对象都复制了一遍.
Object中的clone
Object类中的clone()方法属于浅克隆....Java中实现深克隆
将类中的所有引用类型都进行clone, 并重写对象clone()方法, 对所有引用类型进行clone.
代码如下:
?
将所有引用类型都进行clone, 实现了深克隆....由于Java序列化的过程中, 写在流中的是对象的一个拷贝, 而原对象仍然在JVM中, 所以可以利用这个原理来实现对对象的深克隆.
上面代码使用序列化实现如下:
?