Java反序列化:如何解决InvalidObjectException缺少枚举的问题

时间:2018-08-29 17:46:00

标签: java serialization enums deserialization

我正在努力反序列化大文件,这些大文件需要在将来具有不同属性的软件的将来版本中得到支持。我在很多地方都使用过readObject()来添加版本控制支持,但是有一件事我不确定如何解决。

java.io.InvalidObjectException: enum constant ENUM_NAME does not exist in class

您如何解决这个问题?当加载特定枚举失败时,如何向枚举添加readObject()式函数以允许该枚举的版本控制(即,枚举等返回null)?

据我了解,您不能简单地向枚举添加readObject(),因为Java处理它们的反序列化的方式有所不同。还是我弄错了?很难用谷歌搜索这个话题并找到我的具体问题。我确实需要一种处理枚举版本的方法。

预先感谢您的帮助。

编辑: 我知道这里有一个类似的问题: Handling deserialization of enum values that no longer exist

自那篇文章发表于2012年(其后的答案于2014年发表)以来,我想公开讨论这个问题,而较新的Java版本可能对此问题提供了新的解决方案。谢谢。

0 个答案:

没有答案