ObjectInputStream读取对象输出异常报错或出现乱码

1.出现乱码可能原因:
你的对象可能没有重写toString()方法。

2.重写了toStream()出现报错可能原因:
你使用ObjectOutputStream写入文件时对象类的toString()方法没有写,而是后面重写的,需要先对对象重写了toString()后再ObjectOutStream写入文件,最后用ObjectInputStream来读取文件,就可以输出对象了。一定要检查类加上标签没有:implements Serializable。

3.内部原因:
发生这种情况的原因是,序列号(serialVersionUID)改变了,每次序列化时.class文件和指定的文件都会产生一个相同的序列号,反序列化时会查看这两个序列号是否相同,相同才会执行。而如果你改动了对象类文件,没有进行序列化而是直接反序列化时.class文件序列号就改变了,而指定文件的序列号还是原来的就会出错。也可以通过固定序列号来解决:
直接在对象类中加private static final long serialVersionUID = 1L(常数就行);
这样即使改变了对象类文件,也可以直接反序列化指定文件。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值