如何使用不同的serialVersionUID反序列化对象

时间:2015-06-08 19:25:19

标签: java class serialization deserialization

我知道serialVersionUID用于对可序列化类进行版本控制,因此,如何使用新类加载旧的序列化对象?

我发现的唯一相关问题是: how to discover serialVersionUID of serialized objects

但是,我仍然可以将旧对象反序列化为新更新类的实例?

1 个答案:

答案 0 :(得分:0)

您可以将serialVersionUID设置为所需的任何值(通常在错误消息中可以看到预期值与实际值)。把字段放在

   private static final long serialVersionUID = 1L;

(用旧值替换1),您将能够读取旧数据。

如果你需要同时阅读新格式和旧格式并且它们实际上有所不同,那么最好似乎为该类的新版本提供一个新名称使用resolveObject将旧格式转换为新格式如果leagacy类出现在流中。