74. 谨慎地实现Serializable接口
实现序列化接口带来的问题:
- 灵活性:实现序列化接口会导致程序发布后灵活性变差(导出后要永远支持这种序列化形式)。
- 安全性和BUG:增加了BUG和安全漏洞的可能性:反序列化机制是一个“隐蔽的构造器”。依靠默认的反序列化机制,很容易使对象的约束关系遭到破坏,以及遭到非法访问
- 测试负担:随着类发型新的版本,相关的测试负担也增加了。
最佳实践:为了继承而设计的类,应尽可能少地去实现序列化接口。
75. 考虑使用自定义序列化形式
76. 保护性地编写readObeject方法
针对74条中的安全性问题,可以使用readObject方法来获取对象,保证构造对象时的一些约束被满足