Java序列化基础事项回顾

1. serialersionUID版本控制。

两种用途

1).强制更新(每自动生成)不一致时报错强制版本更新。

2).保持兼容性。服务端类版本更新后,如果serialVersionUID不变,则反序列化可通过,未识别的field填充默认值。

2. 静态变量不序列化。

序列化只针对对象的数据而不是类级别的内容。

3. 不序列化未实现Serializable接口的父类

虚拟机将不序列化父类,但是父类必须提供(默认的)构造器,因为JVM创建对象时必须先初始化其父类。

4. 不序列化Transient关键字,反序列化时赋初始值。

分析以上两条可以实现如下场景

这样父类中的三个属性都不会被序列化,好处是当有多个Child类时,不需要重复写transient,代码简洁。

5. 对敏感字段加密

可以使用ObjectOutputStream的PutField方便编程。案例: RMI 技术是完全基于 Java 序列化技术的

6. 序列化存储规则

同一个对象多次序列化,只存储一次。其他仅存储引用;反序列化时回复一个对象和其他的引用关系。

改变某个属性值后再写入仍然不能写两次,而是一样保存第一个的引用。当要多次序列化一个对象时需要注意这个问题。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值