- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个在 HDF5 或 NetCDF 之上实现的自定义数据存储格式。我的数据格式偶尔会发生变化(但很少),并且以后能够读取“旧”文件非常重要。
我一直在使用 C++ 和 Microsoft COM,但放弃了这些工具包,转而使用 Java。在我的 COM 时代,我可以将数据格式读取器的 CLSID 放在数据文件中一个众所周知的位置,这样,如果该文件的格式比我的默认文件读取器实现旧(或新),我可以如果我的计算机上安装了正确的实现,则实例化它。每当我升级文件格式时,我都会发布一个具有相同基本界面但有新 CLSID 的新阅读器。
在 Java 中是否有等效的方法来执行此操作?
编辑:注意 - 我不想序列化数据文件本身中的 Java 对象实现,我只是想要一种在反序列化时查找正确的类文件的方法。我不确定这是否意味着每次升级文件格式时都必须使用版本号更改包名称,或者我是否可以在每个版本中使用相同的类名(例如 com.example.customreader),使用一些标记(例如serialVersionUID)或注释来区分相关版本。如果我可以将多个版本的 jar 文件放入我的类路径中,我更喜欢后一种方法。
编辑2:我的数据存储方式与ObjectInputStream
和Serialized
无关,而且我没有计划这样做所以除非有一些优势。我自己处理读/写,并且由于HDF5/NetCDF的特性/特性,它不仅仅是处理ObjectInputStream那么简单。
最佳答案
我不熟悉 COM,但您可能想查看 serialVersionUID 的文档 - 这是设计用于在序列化发生更改时进行修改的。
关于java - 使用多个版本的序列化器类处理 Java 自定义序列化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1075247/
我刚开始使用 Dagger 2,想知道与我目前用来实现依赖注入(inject)的技术相比,它有什么优势。 目前,为了实现 DI,我创建了一个具有两种风格的项目:mock 和 prod。在这些风格中,我
我是一名优秀的程序员,十分优秀!