2015-08-19 61 views
0

讀取簽名更改了可序列化的對象我有一個Serializable類,其名稱爲SimpleClass,它具有屬性和方法。我使用下面的代碼來寫入和從文件中讀取它的對象。從文件

保存(W/O異常處理代碼):

FileOutputStream fos = context.openFileOutput(fileName, Context.MODE_PRIVATE); 
ObjectOutputStream os = new ObjectOutputStream(fos); 
os.writeObject(simpleClass); 
os.close(); 
fos.close(); 

負荷(W/O型的異常處理代碼):

FileInputStream fis = context.openFileInput(fileName); 
ObjectInputStream is = new ObjectInputStream(fis); 
SimpleClass simpleClass = (SimpleClass) is.readObject(); 
is.close(); 
fis.close(); 

一段時間後,我添加了一個吸氣劑方法將其(只有方法,而不是屬性)。
之後,SimpleClass simpleClass = (SimpleClass) is.readObject();失敗。該文件在那裏,我假設添加的方法造成了這種情況。
即,保存在文件內部的對象與我現在擁有的對象不同。
有沒有解決這個問題的方法?如何在不刪除附加方法的情況下讀取舊對象?

+0

你是否爲你的SimpleClass使用了serialversionUID – Kandy

回答

0

定義longSimpleClass.java的serialVersionUID。我認爲你可以編輯類。

private static final long serialVersionUID = 1L; 

使其成爲唯一的ID。

0

您需要像修改之前一樣運行該類上的serialver工具,並將結果serialVersionUID的值與現在一樣添加到類中。