Sonarqube error: Class defines a computed serialVersionUID that doesn't equate to the calculated value

Sonarqube error: Class defines a computed serialVersionUID that doesn't equate to the calculated value

正确性 - Class 定义了一个计算的 serialVersionUID,它不等于计算值

这个可序列化的 class 定义了一个 serialVersionUID,它看起来是一个计算值,但该值与计算值不匹配,因此失去了它作为版本指示符的价值。创建一个自定义值,例如 1、2、3、4.. 等,或者使用您的 IDE.

重新计算 serialVersionUID

大概指的是领域:

private static final long serialVersionUID = 18234907734L;

为什么 18234907734L 无效?

18234907734L 无效,因为您所做的更改使 class 新版本的序列化形式与旧版本的序列化形式不兼容。您应该更新 serialVersionUID 的值,但 sonarqube 检测到您没有更新。

(Sonar 可能不会比较新旧版本号,而是知道 IDE 使用什么算法生成版本号,并检查 id 是否与其计算相符)

改变

private static final long serialVersionUID = 18234907734L;

private static final long serialVersionUID = 1L;

当您以某种方式更改 class 结构时,不要忘记更新它,例如添加新字段或删除字段。

另见 What is a serialVersionUID and why should I use it?