我是 Java 的新手,我正在學(xué)習(xí)反序列化,在這樣做的同時我得到了 classcastexception我在一個班級進(jìn)行序列化,在另一個班級進(jìn)行反序列化連載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 無法轉(zhuǎn)換為 demo2.deserialization at demo2.deserialization.main(deserialization.java:69)
1 回答

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