我认为这会引发错误,说明版本号较小;但事实并非如此。并且工作正常。任何人都可以指出,为什么这有效?
我在java 1.7上运行的应用程序中创建了一个hashMap,将其序列化并使用jdk 1.6将其发送到应用程序。接收器应用程序能够毫无错误地获取内容。
答案 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 HashMap和Java 5.0(甚至1.4),这意味着您可以使用Java 1.4-5读/写HashMap
-6-7-8没有任何问题。