为了账号安全,请及时绑定邮箱和手机立即绑定

我在下面的代码中收到 ClassCastException 错误

我在下面的代码中收到 ClassCastException 错误

翻翻过去那场雪 2023-03-17 16:03:11
我是 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个赞

在处理序列化时必须牢记以下几点:

  1. 如果父类实现了 Serializable 接口,则子类不需要实现它,反之亦然。

  2. 只有非静态数据成员通过序列化过程保存。

  3. 静态数据成员和临时数据成员不通过序列化过程保存。因此,如果您不想保存非静态数据成员的值,则将其设为瞬态。

  4. 反序列化对象时,永远不会调用对象的构造函数。

  5. 关联对象必须实现 Serializable 接口。

尝试查看您的代码,找出上述情况之一是否是问题所在。

如需更多帮助,请参阅源代码 - Java 中的序列化


查看完整回答
反对 回复 2023-03-17
  • 1 回答
  • 0 关注
  • 64 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信