天天看点

Java序列化

java序列化

java 提供了一种对象序列化的机制。

该机制中,一个对象可以被表示为一个字节序列,该字节序列包括该对象的数据、有关对象的类型的信息和存储在对象中数据的类型。

序列化:将对象写入文件中

反序列化:将对象从文件中读取出来。也就是说使用保存的对象的类型信息、对象的数据、对象中的数据类型在内存中新建该对象。

整个过程都是 java 虚拟机(jvm)独立的,也就是说,在一个平台上序列化的对象可以在另一个完全不同的平台上反序列化该对象。

类 objectinputstream包含序列化一个对象的方法。

类objectinputstream 包含反序列化一个对象的方法

该方法返回值为object,因此,需要将它转换成合适的数据类型。

java序列化演示

要被序列化的类emloyee

一个类的对象要想序列化成功,必须满足两个条件:

(1)该类必须实现 java.io.serializable 接口。

(2)该类的所有属性必须是可序列化的。如果有一个属性不是可序列化的,则该属性必须注明是短暂的。

检验一个类的实例是否能序列,只需要查看该类有没有实现 java.io.serializable接口。

序列化对象

当序列化一个对象到文件时, 按照 java 的标准约定文件扩展名是 .ser 。

反序列化对象

输出结果:

deserialized employee...

name: reyan ali

address:phokka kuan, ambehta peer

ssn: 0

number:101

当对象被序列化时,属性 ssn 的值为 111222333,但是因为该属性是短暂的,该值没有被发送到输出流。所以反序列化后 employee 对象的 ssn 属性为 0。

transient