jdk源码--序列化

Serialization 序列化是将java对象转换成字节序列的过程,反序列化就是将这些字节重建成对象的过程
起因:分布式对象经常需要将对象从网络的一端传递到另一端。


如何序列化一个对象
这个就要用到ObjectOutputStream,ObjectInputStream
后面看下这个源码。


java序列化算法:
先输出对象类的元数据
递归输出类的超类元数据
从最顶层的超类开始数据实际的数据值
递归输出实例数据值


序列化不保存静态变量的值,也好理解,序列化传递的是对象的状态
反序列化前会检查seruid是否相同,如果没有会默认生成
反序列化时,如果seruid自定义相等,且字段名称类型不变,那么即使类有部分改变,也能够序列化成功,序列化的对象字段无论比本地类字段多或者少都能够序列化成功,但是不能改变现有字段


序列化的关键是:ObjectOutputStream的writeObject方法,以及ObjectInputStream的readObject方法。
无论是默认序列化方式,还是自定义序列化,还是外部序列化,序列化时都要调用到以上类的两个方法。


java.io.ObjectOutputStream:
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值