《Head First Java》20201026读书笔记

P460-P469

《Head First Java》20201026读书笔记

Version ID:序列化的识别

如果将对象序列化,则必须要有该类才能还原和使用该对象、
会损害解序列化的修改:

  • 删除实例变量
  • 改变实例变量的类型
  • 将非瞬时的实例变量改为瞬时的
  • 改变类的继承层次
  • 将类从可序列化改成不可序列化
  • 将实例变量改成静态的e

通常不会有事的修改:

  • 加入新的实例变量(还原时会使用默认值)
  • 在继承层次中加入新的类
  • 从继承层次中删除类
  • 不会影响解序列化程序设定变量值的存取层次修改
  • 将实例变量从瞬时改成非瞬时(会使用默认值)

使用serialVersionUID

每当对象被序列化的同时,该对象都会被盖上一个类的版本识别ID。
这个ID被称为serialVersionUID,它是根据类的结构信息计算出来的。
当类可能会在产生序列化对象之后继续演进时···

  1. 使用serialver工具来取得版本ID
  2. 把输出拷贝到类上
  3. 在修改类的时候要确定修改程序的后果!
    例如,新的Dog要能够处理旧的Dog解序列化之后新加入变量的默认值。

存储BeatBox节奏

在BeatBox中的鼓声样式只不过是一组复选框而已。
在播放sequqence的同时,程序代码会逐个检查复选框以指出哪个鼓声应该在16拍之中放出。
因此,存储节奏对我们而言就是存储复选框的状态。
可以用简单的boolean数组来存储156个复选框的状态。
只要其中的元素都是可被序列化的,数组对象就可以被序列化。因此,存储数组是没有问题的。
要载回节奏样式时,只要读取单一的boolean数组对象(将它还原)并存回复选框就可以。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值