Serializable接口

Posted CRayFish07

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Serializable接口相关的知识,希望对你有一定的参考价值。

实现了Serializable接口的对象,可将它们转换成一系列字节,并可在以后完全恢复回原来的样子。序列化机制能自动补偿操作系统间的差异。

2种主要的特性:
    1、RMI(Remote method invocation)。RMI允许象在本机上一样操作远程机器上的对象。当发送消息给远程对象和调用远程方法时,就需要用到serializaiton机制来发送参数和接收返回值。
    2、保存信息。在某个时候把状态信息保存起来,以便以后某个时候能恢复这些状态信息。
    Hibernaet和EJB中的实体Bean就用到了上面两个特性。

 

外部化和序列化是实现同一目标的两种不同方法。

通过Serializable接口对对象序列化的支持是内建于核心 API 的,但是java.io.Externalizable的所有实现者必须提供读取和写出的实现。Java 已经具有了对序列化的内建支持,也就是说只要制作自己的类java.io.Serializable,Java 就会试图存储和重组你的对象。如果使用外部化,你就可以选择完全由自己完成读取和写出的工作,Java 对外部化所提供的唯一支持是接口:

voidreadExternal(ObjectInput in)
void writeExternal(ObjectOutput out)

 

java.io.Serializable接口序列化一个对象时,有关类的信息,比如它的属性和这些属性的类型,都与实例数据一起被存储起来。在选择走Externalizable这条路时,Java 只存储有关每个被存储类型的非常少的信息

 

Serializable接口

· 优点:内建支持

· 优点:易于实现

· 缺点:占用空间过大

· 缺点:由于额外的开销导致速度变比较慢

Externalizable接口

· 优点:开销较少(程序员决定存储什么)

· 优点:可能的速度提升

· 缺点:虚拟机不提供任何帮助,也就是说所有的工作都落到了开发人员的肩上。

以上是关于Serializable接口的主要内容,如果未能解决你的问题,请参考以下文章

具有 json_serializable 的复杂模型 - List<objects> 未转换为地图

hibernate丢失更新

如何序列化 Windows.Media.Brush

Serializable接口

RandomAccess 接口,为啥没有方法?

Java实体对象为什么要实现Serializable接口?