java 保存 设置_java – 保存设置的实现
我正在寫一些關(guān)于
android的游戲.我想知道如何保存設(shè)置,以免出現(xiàn)更新問題.
例如,我使用序列化保存設(shè)置,我有類GameChar
public class GameChar implements Serializable{
int health;
int damage;
Sword sword;
}
但后來我決定為我的游戲角色增加價值裝甲,我改變了類:
public class GameChar implements Serializable{
int health;
int damage;
int armor;
Sword sword;
}
現(xiàn)在有了更新,我放松了所有進度,因為新類GameChar與GameChar不同.
我有一個想法,使用Map< String,Object>其中key是值的名稱我保存,value是我想要的任何對象(整數(shù),浮點數(shù),日歷或一些我的用戶類Sword).我將使用序列化將此Map保存到文件.
但是,如果我更改了我的一些用戶類Sword,它將與我的Map中已經(jīng)不一樣,并且我將再次松開更新的進度.
也許有一些我想念的圖案或技術(shù)讓它更優(yōu)雅.
最佳答案 您是否注意到,在實現(xiàn)Serializable時,系統(tǒng)會要求您聲明一個名為serialVersionUID的靜態(tài)長度?
此變量的目的是在反序列化時檢測類的舊版本.嘗試使用版本2類從保存的數(shù)據(jù)反序列化版本1對象將導(dǎo)致異常.
(您可以自己實現(xiàn)此行為,如果您不使用Java的序列化工具,它只是一個數(shù)字和if)
一旦檢測到您保存的對象是陳舊的,并且與當前的類定義不匹配,您可以手動修復(fù)該問題.例如,如果你知道一個新的成員int a;在版本2中聲明,并且您選擇了使用版本1序列化的對象,您可以分配一個盡管在保存的信息中缺失但仍然有意義的值.
不幸的是,跟蹤版本是你的工作.最簡單的方法是確??梢允冀K從沒有調(diào)整的舊版本實例化更新的版本 – 例如,將null設(shè)置為有意義的值.
總結(jié)
以上是生活随笔為你收集整理的java 保存 设置_java – 保存设置的实现的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux运行时命令找不到,linux
- 下一篇: 同时运行两个PHP吗,PHP-避免由两个