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

use*_*364 4 java serialization serialversionuid deserialization

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

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

icz*_*cza 12

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

HashMap类中,Java版本6.0和7.0 serialVersionUID都是以下内容:

private static final long serialVersionUID = 362498820763181265L;
Run Code Online (Sandbox Code Playgroud)

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

此外,即使是Java 8.0也有与HashMap相同的串行版本UID以及Java 5.0(甚至1.4),这意味着您可以HashMap使用Java 1.4-5-6-7-8 读取/写入s而没有任何问题.