对象序列化Serializable

<span style="font-size:18px;"><span style="color:#FF0000;">import java.io.Serializable;</span>


public class Graph<X> <span style="color:#FF0000;">implements Serializable</span>
{
	private static final long serialVersionUID = 1L;

// graph node
  public class Node <span style="color:#FF0000;">implements Serializable</span>
  {
	private static final long serialVersionUID = 1L;
	public X data;
    public LinkedList<Edge> edges;
    public Integer indegree;</span>

首先要序列化的对象必须实现Serializable接口。而且,如果要序列化的对象里面还有其他对象,那其他对象也要实现Serializable接口。



下面是序列化的程序段。

<span style="font-size:18px;">public class Clone implements Serializable{  
    /**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public  static Object clone(Object obj) {  
    	Object cloneObj = null;  
        try {  
            //写入字节流  
            ByteArrayOutputStream out = new ByteArrayOutputStream();  
            ObjectOutputStream obs = new ObjectOutputStream(out);  
            obs.writeObject(obj);  
            obs.close();  
              
            //分配内存,写入原始对象,生成新对象  
            ByteArrayInputStream ios = new ByteArrayInputStream(out.toByteArray());  
            ObjectInputStream ois = new ObjectInputStream(ios);  
            //返回生成的新对象  
            cloneObj = (Object) ois.readObject();  
            ois.close();  
        } catch (Exception e) {  
            e.printStackTrace();  
        }  
        return cloneObj;  
    }  
}  
</span>

需要序列化时,调用该方法,把要序列化的对象传进去。

<span style="font-size:18px;">g=(Graph<T>) Clone.clone(this);</span>

这里需要注意一点!!!!

序列化再一定程度上有点混乱。

比如,之前的对象在HashMap里面有映射。当序列化时候,因为是一个全新的对象,所以用这个对象作为Key到HashMap里面查找Value得到的将是NULL!!

因此,在有这种映射关系的代码中,使用序列化需谨慎。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值