利用序列化机制进行深拷贝:
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
*
*/
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;
}
}
}