我是 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
提交
取消