我们使用对象序列化和反序列化时 容易出现这个问题
这个异常捅错有三种情况可以触发
第一种情况 该类没有无参的构造方法
如果是这个情况 直接在类里定义一个无参的构造方法即可
第二种 该类包含未知的数据类型
这个只需要注意一下 类里面的代码和数据定义就好了
第三种 也是最常见的一种
当你用对象序列化流 写入文件后 然后把这个类文件的代码改了 再用反序列化流去读他的数据
这种情况叫 序列化流读取的版本与类的版本不匹配
解决办法很简单 在类中定义一个serialVersionUID
定义了serialVersionUID类中的版本号就会直接读我们定义的 serialVersionUID 就不会每次修改都变动版本号了
参考代码如下
private static final long serialVersionUID = 42L;
然后我们再用对象序列化流将类写入对象 然后之后再怎么改 都不会出现版本问题了