xbjAAAjava序列化与反序列化
java序列化与反序列化一、什么是序列化?序列化是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。序列化是一种将Jav
java序列化与反序列化 一、什么是序列化? 序列化是一种用来处理对象流的机制,所谓对象流也就是将对象的内容进行 流化。可以对流化后的对象进行读写操作,也可将流化后的对象传输于网络之间。 序列化是一种将Java对象的状态转换为字节数组,以便存储或传输的机制, 以后,仍可以将字节数组转换回Java对象原有的状态。 序列化的思想是“冻结”对象状态,传输对象状态(写到磁盘、通过网络传 输等等),然后“解冻”状态,重新获得可用的Java对象。所有这些事情的发生有 点像是魔术,这要归功于ObjectInputStream/ObjectOutputStream类、完全保真 的元数据,以及程序员愿意用Serializable标识接口标记他们的类,从而“参 与”这个过程。 把对象转换为字节序列的过程称为对象的序列化。 把字节序列恢复为对象的过程称为对象的反序列化。 二、为什么要序列化?什么情况下需要序列化? 当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种 类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个对象转换 为字节序列,才能在网络上传送,接收方则需要把字节序列再恢复为对象。 对象序列化可以实现分布式对象。主要应用例如:RMI要利用对象序列化运 行远程主机上的服务,就像在本地机上运行对象时一样。 java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对 象的数据。可以将整个对象层次写入字节流中,可以保存在文件中或在网络连接上 传递。利用对象序列化可以进行对象的"深复制",即复制对象本身及引用的对象本

