我想将我的问题更改为以下内容:
我有一个 HashMap 对象和一个 int。我想将其序列化到同一个文件中然后返回。我知道我应该按照与序列化相同的顺序进行反序列化。
请向我提供执行该操作的代码。
最佳答案
我根据您提供的信息做出假设,您遇到的序列化问题是由于原始序列化类与具有新字段的更新类之间的不兼容性。
如果您之前序列化了一个类,但未指定private static long serialVersionUID
,则添加新字段将在尝试读回文件时导致 InvalidClassException。
请注意,在序列化先前版本之后,仅添加serialVersionUID不会产生兼容的类。您需要做的是重新生成原始的serialVersionUID,获取该数字并将其应用到您的类中。
您必须采取的步骤:
- (暂时)删除新的 int 并编译
- 通过运行
serialVer
生成原始serialVersionUID反对编译的 类 - 获取结果编号并将其分配给您要应用于更新类的
private static long serialVersionUID
- 重新添加新的整数。
完成这些步骤后,您应该可以反序列化原始文件。
关于Java序列化问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1438733/