2009-07-02 52 views
0

我有一个自定义的数据存储格式,我正在HDF5或NetCDF之上实现。我的数据格式偶尔会(但很少)发展,能够在稍后阅读“旧”文件很重要。使用多个版本的序列化程序类处理Java自定义序列化?

我一直在使用C++和Microsoft COM,但已经放弃了那些有利于Java的工具包。在我的COM日中,我可以将数据格式阅读器的CLSID放在数据文件中的一个众所周知的地方,这样如果文件比我的默认文件阅读器实现更旧(或更新),我可以如果它安装在我的电脑上,则实例化正确的实现。每当我上传文件格式时,我都会发布一个具有相同基本界面但新CLSID的新阅读器。

在Java中有这样的方法吗?

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

编辑2:我的数据存储在具有无关ObjectInputStreamSerializable的方式,我也没有计划这样做,除非有一些优势。我自己处理读/写操作,并且由于HDF5/NetCDF的特性/特性,它不像处理ObjectInputStream那么简单。

回答

1

我不熟悉COM,但您可能想看看serialVersionUID的文档 - 这是为了在序列化应该改变时修改而设计的。

+0

我想过......看到有问题的评论。 – 2009-07-02 16:21:46