首页 理论教育 Java序列化概述-零基础Java从入门到精通

Java序列化概述-零基础Java从入门到精通

时间:2023-10-19 理论教育 版权反馈
【摘要】:使用字节流形式在网络传输中是十分方便的。这其中“拆解”的过程就是序列化,“重新组成”的过程就是反序列化。图14.6.1序列化与反序列化Java中的序列化很简单,不需要编写额外的序列化和反序列化对象的代码,只需将待序列化的对象实现java.io.Serializable接口即可,示例如下:但是Serializable接口没有定义序列化或反序列化必须实现的方法,这里所说的实现Serializable接口可以当作仅仅是标志了该对象可以被序列化。

Java序列化概述-零基础Java从入门到精通

前面几节讲述了使用Java输入流/输出流对文件进行操作,考虑到现在互联网各个用户端和服务端都有大量数据进行传输,有时我们也需要先将一个Java对象转换成字节流(数据流)再传输出去,或是从传入的字节流中恢复一个Java对象。使用字节流形式在网络传输中是十分方便的。举一个通俗易懂的例子,如果把一座房子比作一个对象,要把这座房子搬到另一个地方的话,直接挪动是不现实的,但是可以将房子拆解成一个个小零件运输,到了目的地后再重新组成房子,这样就容易多了。这其中“拆解”的过程就是序列化,“重新组成”的过程就是反序列化。

图14.6.1 序列化与反序列化

Java中的序列化很简单,不需要编写额外的序列化和反序列化对象的代码,只需将待序列化的对象实现java.io.Serializable接口即可,示例如下:

(www.xing528.com)

但是Serializable接口没有定义序列化或反序列化必须实现的方法,这里所说的实现Serializable接口可以当作仅仅是标志了该对象可以被序列化。

提示

需要注意的是,并不是所有类中的成员属性都可以被序列化。有些属性被关键字“transient”修饰,表示该属性不想被序列化,这类属性在序列化时会直接被自动忽略,反序列化后该数据也不会存在。

java.io包中还提供了ObjectOutputStream类和ObjectInputStream类,其中有具体的序列化和反序列化对象的方法。下面将对这两个类的具体使用方法进行介绍。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈