【问题标题】:Is implementing java.io.Serializable even in simple POJO Java classes a best practice?即使在简单的 POJO Java 类中实现 java.io.Serializable 也是最佳实践吗?
【发布时间】:2008-10-20 17:42:40
【问题描述】:

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

【问题讨论】:

    标签: java serialization


    【解决方案1】:

    一般不会。 Joshua Bloch 对implement Serializable judiciously 说。他描述的缺点总结:

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

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

    【讨论】:

      【解决方案2】:

      仅当您需要能够序列化它们时。否则为not worth the effort

      【讨论】:

        【解决方案3】:

        这更多地取决于需求。在 Web 应用程序的上下文中,一些 Web 服务器(例如 Tomcat 6)甚至强制序列化我们在会话中存储其对象的类。

        【讨论】:

          【解决方案4】:

          我为解决序列化表单不向后兼容(例如在正在运行的系统上动态重新加载类时)这一事实所做的一件事是将要保存的字段加载到哈希图中,然后对其进行序列化。这样,即使缺少字段,我也可以始终反序列化数据。您可能必须为缺少的键提供默认值,但这比弄乱字段顺序要好。

          【讨论】:

            猜你喜欢
            • 2018-01-02
            • 2018-05-12
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2017-02-17
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多