Java中什么是序列化?

来源:互联网 发布:小程序 video.js 编辑:程序博客网 时间:2024/05/21 21:36

  序列化,又称为“串化”,可以形象的把它理解为把Java对象内存中的数据采编成一串二进制的数据,然后把这些数据存放在可以可以持久化的数据设备上,如磁盘。当需要还原这些数据的时候,在通过反序列化的过程,把对象又重新还原到内存中。

   java.io.Serializable接口是可以进行序列化的类的标志性接口,该接口本身没有任何需要实现的抽象方法,它仅仅是用来告诉JVM该类的对象可以进行反序列化的,并且它的序列化ID由静态的serialVersionlUID变量提供。

   serialVersionlUID变量其实是一个静态的long型的常量,它的作用在序列化和反序列化的过程中,起到了一个辨别类的作用。在反序列化的时候,如果俩个类的类名完全相同,就通过serialVersionlUID老判断该类是否符合要求,如果不行,则抛出异常。

   javaI/O提供了一对类用做对象的序列化和反序列化,主要包括ObjectInputStreamObjectOutputStream。它们的用法与字节流相似,只不过此时处理的是对象,而不仅仅是字节数据了。

总结:

  序列化本质上就是把对象内存中的数据按照一定规则,变成一系列的字节数据,然后在把这些字节数据写入到流中。而反序列化的过程相反,先读取字节数据,然后在重新组装成Java对象。

所有需要进行序列化的类,都必须实现Serializable接口,必要时还需要提供静态的常量serialVersionUID

0 0
原创粉丝点击