我正在制作游戏。游戏设计师创建一个Game
对象,然后将其保存到硬盘驱动器中;为了玩游戏,用户从硬盘驱动器加载Game
对象。 Game
对象为Serializable
。 Game
对象包含数千个其他对象(Map
,Person
,Tile
等),所有这些对象都是Serializable
。
不幸的是,我不小心为我的游戏添加了一个新功能:一个名为Large
的课程。我忘记在Serializable
上实施Large
界面了。然后我将Large
对象添加到我花了相当长时间工作的现有Game
文件中。保存Game
文件后,发生了NotSerializableException
异常。
我正在尝试从此错误中恢复并以可用的形式从硬盘驱动器中检索我的Game
文件,以便我可以继续设计我的游戏,而无需再次创建它。不幸的是,当我尝试加载文件时,我得到NotSerializableException
。我尝试了以下策略,没有成功:
Serializable
课程Large
large
”变量transient
您还有其他解决方案吗?
答案 0 :(得分:-1)
你确定游戏真的被保存了吗?如果在保存文件时发生异常,我认为它无法将对象序列化。
您遇到的问题实际上是使用序列化对象进行这类事情的主要缺陷。当你对类进行更改时,例如以下之一,旧的序列化对象变得不兼容。
您应该使用自己的数据格式(在您还在的时候)。您可以选择您选择的数据格式,甚至使用XML或JSON(后者现在变得越来越流行,因为它更轻量级)并且有可用的API来快速轻松地保存对象。