effect java 学习摘要(9) - 序列化

Serializable接口

  • 将一个对象编码成一个字节流 , 称为对象序列化.

  • Serializable接口 实现的代价 :

    • 一旦一个类被发布, 就大大降低了”改变这个类的实现”的灵活性 ; 序列化类的唯一标识符 是 序列版本 UID .
    • 它增加了出现bug和安全漏洞的可能性
    • 随着类发行新的版本 , 相关的测试负担也增加了
  • 要点 :

    • 为了继承而设计的类应该尽可能少地去实现Serializable.
    • 对于为继承而设计的不可序列化的类 , 你应该考虑提供一种无参构造器.
    • 内部类不应该实现Serializable.

自定义的序列化形式

  • 使用默认的序列化形式是合适的 , 通常还必须提供一个readObject方法以保证约束关系和安全性.

  • 使用默认序列化形式,会有以下缺点 :

    • 使这个类的导出API永远地束缚在该类的内部表示法上
    • 它会消耗过多的空间
    • 它会消耗过多的时间
    • 它会引起栈溢出
  • 如果在读取整个对象状态的任何其他方法上强制任何同步, 则也必须在对象序列化上强制这种同步

  • 为每个可序列化的类声明一个显式的序列版本UID

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值