您的位置:首页 > 编程语言 > Java开发

jdk源码--序列化

2017-10-09 16:28 162 查看
Serialization 序列化是将java对象转换成字节序列的过程,反序列化就是将这些字节重建成对象的过程

起因:分布式对象经常需要将对象从网络的一端传递到另一端。

如何序列化一个对象

这个就要用到ObjectOutputStream,ObjectInputStream

后面看下这个源码。

java序列化算法:

先输出对象类的元数据

递归输出类的超类元数据

从最顶层的超类开始数据实际的数据值

递归输出实例数据值

序列化不保存静态变量的值,也好理解,序列化传递的是对象的状态

反序列化前会检查seruid是否相同,如果没有会默认生成

反序列化时,如果seruid自定义相等,且字段名称类型不变,那么即使类有部分改变,也能够序列化成功,序列化的对象字段无论比本地类字段多或者少都能够序列化成功,但是不能改变现有字段

序列化的关键是:ObjectOutputStream的writeObject方法,以及ObjectInputStream的readObject方法。

无论是默认序列化方式,还是自定义序列化,还是外部序列化,序列化时都要调用到以上类的两个方法。

java.io.ObjectOutputStream:
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: