利用Java序列化机制进行克隆深拷贝
利用序列化机制进行深拷贝:
A.将对象序列化到输出流再读回即可,且中间过程无需写入文件,只需使用ByteArrayOutputStream将数据存为字节数组.
*需要注意的是,这种克隆方法比显式地在clone方法中创建一个新的对象或克隆数据域要慢一些.
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
/**
* @version 把要通过序列化进行克隆的类继承该SerialCloneable
* @author yping061
*
*/
public class SerialCloneable implements Cloneable,Serializable{public Object clone(){try{ //save the object to a byte array ByteArrayOutputStream bout=new ByteArrayOutputStream(); ObjectOutputStream out=new ObjectOutputStream(bout); out.writeObject(this); out.close(); //read a clone of the object from the byte array ByteArrayInputStream bin=new ByteArrayInputStream(bout.toByteArray()); ObjectInputStream in=new ObjectInputStream(bin); Object result=in.readObject(); in.close(); return result;}catch(Exception e){ return null;}}}