由于近期项目任务较为繁重,所以一直没有抽出时候来更新自己的东西;或许已经被自
勉的coder拉开很大的距离,今天看到一个深度复制的问题引起了我的反思:
在这之前,我一般考虑到复制一个对象的场景时,总是会在对应的类型声明中覆盖一个
克隆方法来解决问题;这样确实行之有效,但如果系统中已经有成熟的规范时,此时或许跟
序列化的方式结合可能更好,可以参考如下例子:
public Object deepCopy(){
//写入
ByteArrayOutputStream bOut = new ByteArrayOutputStream();
ObjectOutputStream oOut = new ObjectOutputStream(bOut);
oOut.writeObject(this);
//读回
ByteArrayInputStream bIn = new ByteArrayInputStream(bOut.toByteArray());
ObjectInputStream oIn = new ObjectInputStream(bIn);
return oIn.readObject();
}
重点:
自我复制的对象类型需实现序列化接口;
同时,对象中引用的对象也需要序列化标识;