java.io.InvalidClassException: made.customException; local class incompatible: stream classdesc seri

我们使用对象序列化和反序列化时 容易出现这个问题
这个异常捅错有三种情况可以触发

第一种情况 该类没有无参的构造方法
如果是这个情况 直接在类里定义一个无参的构造方法即可

第二种 该类包含未知的数据类型
这个只需要注意一下 类里面的代码和数据定义就好了

第三种 也是最常见的一种

当你用对象序列化流 写入文件后 然后把这个类文件的代码改了 再用反序列化流去读他的数据
这种情况叫 序列化流读取的版本与类的版本不匹配
在这里插入图片描述
解决办法很简单 在类中定义一个serialVersionUID

定义了serialVersionUID类中的版本号就会直接读我们定义的 serialVersionUID 就不会每次修改都变动版本号了

参考代码如下

private static final long serialVersionUID = 42L;

在这里插入图片描述
然后我们再用对象序列化流将类写入对象 然后之后再怎么改 都不会出现版本问题了

猜你喜欢

转载自blog.csdn.net/weixin_45966674/article/details/127468627