即使在简单的POJO Java类中实现java.io.Serializable也是最佳实践吗?

CBa*_*ass 6 java serialization

一般来说,让简单的POJO Java类实现java.io.Serializable是一种最佳实践吗?

bha*_*nki 13

一般不是.Joshua Bloch表示明智地实施Serializable.他描述的缺点摘要:

  • 降低了以后更改类实现的灵活性 - 序列化表单是类API的一部分
  • 更容易出现一些错误和安全漏洞 - 攻击者可以访问序列化字节流中的类内部
  • 增加测试负担 - 现在你必须测试序列化!
  • 负担子类的作者 - 他们也必须使他们的子类Serializable

当然,有时你需要一个POJO来实现Serializable,比如RMI,但如果不需要,你的代码将更简单,更安全.