effect java 学习摘要(9)

来源:互联网 发布:hp网络交换机 编辑:程序博客网 时间:2024/06/06 11:09

Serializable接口

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

  • Serializable接口 实现的代价 :

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

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

自定义的序列化形式

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

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

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

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

原创粉丝点击