java - 如何更新持久化 Java 对象的结构?

标签 java serialization

我遇到了 Java 序列化问题。假设我有一个对象持久保存到文件系统。在后一版本中,我们如何根据对象结构的修改来更新文件的结构?

例如,如果我保存对象

A{int a; String b} to file

然后我将结构更改为 A{int a; String b, char c} 有什么方法可以根据 A 的最新版本更改以前保存的文件吗?

最佳答案

这是可能的。您需要使下一个版本向后兼容以前的版本。 Java 序列化规范中解释了这样做的方法:http://docs.oracle.com/javase/1.3/docs/guide/serialization/spec/version.doc.html .

但是,这个问题很好地说明了为什么使用 native Java 序列化来长时间保存对象通常不是一个好主意。如果您使用了一种特定的格式(XML、JSON 或其他),您可以轻松地读取和转换文件本身,或者能够读取具有不同序列化程序实现的文件的任何版本,从而更容易地从一个版本迁移给另一个。

关于java - 如何更新持久化 Java 对象的结构?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10382239/

相关文章:

serialization - 基于查询参数的条件成员序列化?

Java 应用程序安装到 C :/Program Files - java. io.FileNotFoundException 时无法写入/读取序列化文件:(访问被拒绝)

java - 如何在给定枚举的情况下获取 List<String> 或 Set<String> 形式的名称?

java - Swingworker 产生重复输出/输出无序?

java - 我无法理解 Merge Sorted Array 的示例测试用例?

java - 调用 JavaPairRDD.max 时 Spark 中的任务不可序列化异常

java - 具有复杂键的 map 的 JSON 表示

java - Spring boot REST api,在外键上传递 id 而不是整个对象

java - 将 Button OnClick 与 Fragment 中 RecyclerView 内的 Row OnClick 分开

java - 有没有办法找出Kafka序列化数据所花费的时间