如何反序列化使用不同Java版本存储的对象?

时间:2014-12-02 15:21:15

标签: java serialization

我正在开发一个正在进行开发的相当大的Java项目(模拟程序),但在不同的计算机上并行运行不同的版本。

在运行时,当前模拟状态可以保存为稍后要继续的对象流,可能在另一台计算机上 - 这是一个非常关键的功能。由于该程序的当前可用版本可能与前一段时间序列化流的旧版本不兼容,因此我将整个程序与存储的流一起存储在JAR文件中,以便能够使用程序版本对其进行干净地反序列化。创造了它。

但是,我现在注意到Java版本本身也是一个陷阱(显然)意味着必须在用于序列化流的反序列化系统上运行相同的Java版本。更糟糕的是,即使Java 8的不同更新似乎也彼此不兼容(虽然我不能再重新创建这种特定情况,因为目前所有计算机都安装了最新的更新)。由于我无法控制程序运行的所有计算机上的所有Java版本,因此这是一个严重的问题。

我对序列化不是很好,所以可能(希望)有一种很好的方法来处理这种情况,我只是没有得到......?

1 个答案:

答案 0 :(得分:0)

使用System.getProperty("java.version")获取表示您当前运行的Java版本的字符串。然后使用它作为键来决定要反序列化的对象。