`
yping061
  • 浏览: 8048 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

利用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;	
		}
	}

}

   
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics