美文网首页程序员
Java的序列化变成了什么东西

Java的序列化变成了什么东西

作者: 自在雀 | 来源:发表于2018-08-23 10:54 被阅读0次

序列化

Java序列化就是将一个对象转化成一串二进制表示的字节数组,通过保存或转移这些字节数据来达到持久化的目的。进行序列化,实质是保存对象的当前状态信息,不需要保存完整的结构信息。思考一下对象的哪些信息是代表对象瞬态的,序列化应该保存哪些信息,static属性是否有必要持久化到文件中。
实现java.io.Serializable接口

序列化的文件二进制字节数据格式分析:

1)第一部分是序列化文件头
  STREAM_MAGIC 声明使用了序列化协议
  STREAM_VERSION 序列化协议版本
  TC_OBJECT 声明这是一个新的对象
2)第二部分是序列化的类的描述
  TC_CLASSDESC 声明这里开始是一个新Class
  Class名字长度
  Class完整类名
  serialVersionUID: 如果没指定随机生成8个字节的ID
  标记号:声明该对象支持序列化
  类含域的个数
3)第三部分是对象中各个属性项的描述
  域类型 Int类型
  域名字的长度
  属性名称
4)第四部分输出对象的父类信息描述,数据格式与第二部分一样
  对象块结束标志
  没有超类标志
5)第五部分输出对象属性项的实际值,如果属性项是一个对象,这里将序列化这个对象,与第二部分一样
  属性值

总结:

  1. 当父类继承接口Serializable,所有子类都可以被序列化
  2. 当子类继承接口Serializable,父类没有,父类的属性不能被序列化,子类中的属性能被正常序列化
  3. 如果序列化属性的对象,这个对象必须实现接口,否则报错。如List集合不实现这个接口,不能直接序列化,但是数组是可以序列化。
  4. 反序列化时,目标对象的属性有修改或删除,修改部分属性会丢失,不会报错。
  5. 反序列化时,serialVersionUID 的值与目标对象的值不一致时,反序列失败。

参考自 许令波--深入分析Java Web技术内幕

相关文章

  • Java的序列化变成了什么东西

    序列化 Java序列化就是将一个对象转化成一串二进制表示的字节数组,通过保存或转移这些字节数据来达到持久化的目的。...

  • Java-序列化-反序列化

    Thanks Java基础学习总结——Java对象的序列化和反序列化java序列化反序列化原理Java 序列化的高...

  • java序列化那些事儿

    java序列化作用 在说java序列化的作用之前,先说下什么是java序列化吧。java序列化是指把java对象转...

  • Java序列化

    Java序列化的几种方式以及序列化的作用 Java基础学习总结——Java对象的序列化和反序列化

  • Java序列化机制

    Java序列化机制 序列化和反序列化 Java序列化是Java内建的数据(对象)持久化机制,通过序列化可以将运行时...

  • 认识Java序列化

    我的个人博客,认识Java序列化 引言 将 Java 对象序列化为二进制文件的 Java 序列化技术是 Java ...

  • Spark序列化

    Java序列化 有关Java对象的序列化和反序列化也算是Java基础的一部分,首先对Java序列化的机制和原理进行...

  • Java 序列化 之 单例模式

    序列化相关文章: Java 序列化 之 Serializable Java 序列化之 Externalizable...

  • java 序列化 原理解析

    序列化相关文章: Java 序列化 之 Serializable Java 序列化之 Externalizable...

  • JDK 序列化

    序列化和分序列化概念 什么是序列化和反序列化 Java序列化是指把Java对象转换为字节序列的过程,而Java反序...

网友评论

    本文标题:Java的序列化变成了什么东西

    本文链接:https://www.haomeiwen.com/subject/sujpiftx.html