深复制与浅复制:
本质上都是基于原型模式的理念,
复制本身即是以原对象的数据及结构为原型进行拷贝,
深复制即是对于对象及其子对象(数据与结构)的完全克隆,而浅复制只是对对象本身克隆。
Java中:
浅复制只需对象实现cloneable接口即可,接口中对于clone()的实现即是浅复制;
深复制则需重写clone()方法或自定义方法,一般最简单的深复制实现是将对象整个序列化为流式数据后再反序列化为Object,
代码实现如下:
public Object deepCopy() {
Object obj = null;
try {
// 将对象写成 Byte Array
ByteArrayOutputStream bos = new ByteArrayOutputStream();
ObjectOutputStream out = new ObjectOutputStream(bos);
out.writeObject(this);
out.flush();
out.close();
// 从流中读出 byte array,调用readObject函数反序列化出对象
ObjectInputStream in = new ObjectInputStream(
new ByteArrayInputStream(bos.toByteArray()));
obj = in.readObject();
} catch (IOException | ClassNotFoundException e) {
e.printStackTrace();
}
return obj;
}
原文链接:https://blog.csdn.net/qq_26749125/article/details/81565963
相关代码链接:https://blog.csdn.net/qq_26749125/article/details/81565963