【问题标题】:Can HashMap serialized in 1.7, be used in 1.6?HashMap 1.7 可以序列化,1.6 可以用吗?
【发布时间】:2014-10-19 13:15:47
【问题描述】:

我认为这会引发错误,说明次要版本号;但它没有。并且工作正常。谁能指出,为什么会这样?

我在 java 1.7 上运行的应用程序中创建了一个 hashMap,将其序列化并将其发送到使用 jdk 1.6 的应用程序。接收方应用程序能够正确获取内容。

【问题讨论】:

    标签: java serialization deserialization serialversionuid


    【解决方案1】:

    这就是serialVersionUID 属性发挥作用的地方。

    在 Java 版本 6.0 和 7.0 的 HashMap 类中,serialVersionUID 如下:

    private static final long serialVersionUID = 362498820763181265L;
    

    这意味着没有对类进行任何更改,这会改变对象的序列化方式,因此如果使用不同版本的 Java 来序列化/反序列化对象,则不会出现错误,两者都能够正确序列化/反序列化对象。

    此外,即使是 Java 8.0 也有 same serial version UID for HashMapJava 5.0(甚至是 1.4),这意味着您可以使用 Java 1.4-5-6-7-8 读取/写入 HashMaps 而无需任何问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-29
      • 1970-01-01
      • 2012-07-31
      • 1970-01-01
      • 2014-07-19
      • 2015-12-23
      • 1970-01-01
      • 2013-07-21
      相关资源
      最近更新 更多