gpt4 book ai didi

java - 使用多个版本的序列化器类处理 Java 自定义序列化?

转载 作者:行者123 更新时间:2023-12-01 16:11:26 26 4
gpt4 key购买 nike

我有一个在 HDF5 或 NetCDF 之上实现的自定义数据存储格式。我的数据格式偶尔会发生变化(但很少),并且以后能够读取“旧”文件非常重要。

我一直在使用 C++ 和 Microsoft COM,但放弃了这些工具包,转而使用 Java。在我的 COM 时代,我可以将数据格式读取器的 CLSID 放在数据文件中一个众所周知的位置,这样,如果该文件的格式比我的默认文件读取器实现旧(或新),我可以如果我的计算机上安装了正确的实现,则实例化它。每当我升级文件格式时,我都会发布一个具有相同基本界面但有新 CLSID 的新阅读器。

在 Java 中是否有等效的方法来执行此操作?

编辑:注意 - 我不想序列化数据文件本身中的 Java 对象实现,我只是想要一种在反序列化时查找正确的类文件的方法。我不确定这是否意味着每次升级文件格式时都必须使用版本号更改包名称,或者我是否可以在每个版本中使用相同的类名(例如 com.example.customreader),使用一些标记(例如serialVersionUID)或注释来区分相关版本。如果我可以将多个版本的 jar 文件放入我的类路径中,我更喜欢后一种方法。

编辑2:我的数据存储方式与ObjectInputStreamSerialized无关,而且我没有计划这样做所以除非有一些优势。我自己处理读/写,并且由于HDF5/NetCDF的特性/特性,它不仅仅是处理ObjectInputStream那么简单。

最佳答案

我不熟悉 COM,但您可能想查看 serialVersionUID 的文档 - 这是设计用于在序列化发生更改时进行修改的。

关于java - 使用多个版本的序列化器类处理 Java 自定义序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1075247/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com