正确性-类定义了一个计算的serialVersionUID,该UID不等于计算的值
这个可序列化类定义了一个serialVersionUID,它看起来是一个计算值,但该值与计算值不匹配,因此会丢失其作为版本指示符的值。创建一个自定义值,如1、2、3、4..等,或者使用IDE重新计算serialVersionUID。
可能指的是该领域:
private static final long serialVersionUID = 18234907734L;
为什么18234907734L无效?
18234907734L
无效,因为您所做的更改使类的新版本的序列化形式与旧版本的序列化格式不兼容。您本应更新serialVersionUID
的值,但很可能检测到您没有。
(Sonar可能不会比较新旧版本号,相反,它知道IDE使用什么算法来生成版本号,并检查id是否与其计算结果匹配(
更改
private static final long serialVersionUID = 18234907734L;
至
private static final long serialVersionUID = 1L;
当您以某种方式更改类结构时,不要忘记更新它,比如添加新字段或删除字段。
另请参阅什么是serialVersionUID以及为什么要使用它?