如何确保我的数据库"如果我将来添加功能,不会中断

时间:2015-10-18 18:41:56

标签: java

在我的应用中,我使用Serializable将数据存储到文件中。该文件包含DictionaryEntry对象的映射,这是我自己创建的一个类。我注意到,当我向该类添加字段时,它会破坏我现有的文件,因为它会读取它。编译器抛出错误(我无法记住哪一个)。 DictionaryEntry的字段包含一些我绝对不能丢失的重要字段,那么将来如何在不删除所有数据的情况下向DictionaryEntry类添加更多字段和方法?

编辑:这是我添加新字段时出现的错误

java.io.InvalidClassException: Logic.DictionaryEntry; local class incompatible: stream classdesc serialVersionUID = -637986868145725934, local class serialVersionUID = 1552091926235600295

1 个答案:

答案 0 :(得分:1)

您提出的问题非常通用,您面临的问题可能是由于各种不同的原因。我会要求您通过提供编译代码时遇到的错误来澄清这一点。

就为您的类添加mote字段和方法而言,序列化允许一定量的类变化,这样即使在重构之后, ObjectInputStream 仍然可以正常读取它。 Java对象序列化规范可以自动管理的关键事项是:

  • 向班级添加新字段。
  • 将字段从静态更改为非静态。
  • 将字段从瞬态更改为非瞬态。

另一种方式(从非静态到静态或非瞬态到瞬态)或删除字段需要额外的按摩,具体取决于您所需的向后兼容程度。