码迷,mamicode.com
首页 > 编程语言 > 详细

Java 序列化和反序列化(二)Serializable 源码分析 - 1

时间:2019-06-07 13:05:00      阅读:111      评论:0      收藏:0      [点我收藏+]

标签:ntb   inf   objects   http   silent   title   nali   具体类   文章   

Java 序列化和反序列化(二)Serializable 源码分析 - 1

在上一篇文章中讲解了一下 Serializable 的大致用法,本节重点关注 Java 序列化的实现,围绕 ObjectOutputStream#writeObject 方法展开。

1. Java 序列化接口

Java 为了方便开发人员将 Java 对象进行序列化及反序列化提供了一套方便的 API 来支持。其中包括以下接口和类:

技术图片

  • Serializable 和 Externalizable 序列化接口。Serializable 接口没有方法或字段,仅用于标识可序列化的语义,实际上 ObjectOutputStream#writeObject 时通过反射调用 writeObject 方法,如果没有自定义则调用默认的序列化方法。Externalizable 接口该接口中定义了两个扩展的抽象方法:writeExternal 与 readExternal。

  • DataOutput 和 ObjectOutput DataOutput 提供了对 Java 基本类型 byte、short、int、long、float、double、char、boolean 八种基本类型,以及 String 的操作。ObjectOutput 则在 DataOutput 的基础上提供了对 Object 类型的操作,writeObject 最终还是调用 DataOutput 对基本类型的操作方法。

  • ObjectOutputStream 我们一般使用 ObjectOutputStream#writeObject 方法把一个对象进行持久化。ObjectInputStream#readObject 则从持久化存储中把对象读取出来。

  • ObjectStreamClass 和 ObjectStreamField ObjectStreamClass 是类的序列化描述符,包含类描述信息,字段的描述信息和 serialVersionUID。可以使用 lookup 方法找到/创建在此 Java VM 中加载的具体类的 ObjectStreamClass。而 ObjectStreamField 则保存字段的序列化描述符,包括字段名、字段值等。

http://www.importnew.com/17964.html
https://blog.csdn.net/shenchaohao12321/article/details/79504515

https://blog.csdn.net/silentbalanceyh/article/details/8250096


每天用心记录一点点。内容也许不重要,但习惯很重要!

Java 序列化和反序列化(二)Serializable 源码分析 - 1

标签:ntb   inf   objects   http   silent   title   nali   具体类   文章   

原文地址:https://www.cnblogs.com/binarylei/p/10987933.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!