可以在1.7中序列化HashMap,在1.6中使用吗?

时间:2014-08-26 09:07:41

标签: java serialization deserialization serialversionuid

我认为这会引发错误,说明版本号较小;但事实并非如此。并且工作正常。任何人都可以指出,为什么这有效?

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

1 个答案:

答案 0 :(得分:12)

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

HashMap类中,Java版本6.0和7.0 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读/写HashMap -6-7-8没有任何问题。