Serializable接口学习

Object serialization 允许你将实现了Serializable接口的对象转换为字节序列,这些字节序列可以被完全存储以备以后重新生成原来的对象。

Object serialization主要用来支持2种主要的特性:
1。Java的RMI(remote method invocation).RMI允许象在本机上一样操作远程机器上的对象。当发送消息给远程对象时,就需要用到serializaiton机制来发送参数和接收返回直。
2。Java的JavaBeans. Bean的状态信息通常是在设计时配置的。Bean的状态信息必须被存起来,以便当程序运行时能恢复这些状态信息。这也需要serializaiton机制。

如果一个类实现了Serializable,则可以进行 writeObject(java.io.ObjectOutputStream out)进行备份,之后可以通过readObject(java.io.ObjectInputStream in)用来恢复。因此可以通过这种方法进行克隆。下面是一个clone方法的实现,
@Override
protected Object clone() throws CloneNotSupportedException {
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 ret = in.readObject();
in.close();

return ret;
} catch (Exception e) {
e.printStackTrace();
return null;
}

这种方法进行的克隆属于深度克隆,返回的是一个全新的对像。通过Serializable方法保存对像,[color=darkblue]它的属性必须都实现了Serializable接口[/color],不然不能进行序列化。如果属性是集合类,可以不需要实现Serializable接口,也可以序列化。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值