我是 Java 的新手,我正在學習反序列化,在這樣做的同時我得到了 classcastexception我在一個班級進行序列化,在另一個班級進行反序列化連載zipfile f = new zipfile(30,"kavin");ArrayList<zipfile> a = new ArrayList<zipfile>(101);a.add(f);String file = "def.txt";try { FileOutputStream fi = new FileOutputStream(file); ObjectOutputStream s = new ObjectOutputStream(fi); s.writeObject(f); System.out.println(f.age); s.close(); fi.close();} catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace();}catch (IOException e){ e.printStackTrace();}反序列化String file = "def.txt";try { FileInputStream fi = new FileInputStream(file); ObjectInputStream s = new ObjectInputStream(fi); f=(deserialization)s.readObject(); System.out.println(f.age);} catch (FileNotFoundException e) { // TODO Auto-generated catch block e.printStackTrace();}catch (IOException e){ e.printStackTrace();} catch (ClassNotFoundException e){ e.printStackTrace();}}輸出線程“main”中的異常 java.lang.ClassCastException:demo2.zipfile 無法轉換為 demo2.deserialization at demo2.deserialization.main(deserialization.java:69)
1 回答

鳳凰求蠱
TA貢獻1825條經驗 獲得超4個贊
在處理序列化時必須牢記以下幾點:
如果父類實現了 Serializable 接口,則子類不需要實現它,反之亦然。
只有非靜態數據成員通過序列化過程保存。
靜態數據成員和臨時數據成員不通過序列化過程保存。因此,如果您不想保存非靜態數據成員的值,則將其設為瞬態。
反序列化對象時,永遠不會調用對象的構造函數。
關聯對象必須實現 Serializable 接口。
嘗試查看您的代碼,找出上述情況之一是否是問題所在。
如需更多幫助,請參閱源代碼 - Java 中的序列化
添加回答
舉報
0/150
提交
取消