CodeQL 文档

不正确的 serialVersionUID 字段

ID: java/incorrect-serial-version-uid
Kind: problem
Security severity: 
Severity: warning
Precision: medium
Tags:
   - reliability
   - maintainability
   - language-features
Query suites:
   - java-security-and-quality.qls

单击以在 CodeQL 存储库中查看查询

使用 serialVersionUID 字段作为对象版本号的可序列化类必须将该字段声明为 finalstatic,并且类型为 long,以便 Java 序列化框架使用它。

建议

确保序列化类中的 serialVersionUID 字段为 final、static,并且类型为 long

示例

在以下示例中,WrongNote 使用错误的类型定义 serialVersionUID,因此 Java 序列化框架不使用它。但是,Note 正确定义了它,以便框架使用它。

class WrongNote implements Serializable {
	// BAD: serialVersionUID must be static, final, and 'long'
	private static final int serialVersionUID = 1;
	
	//...
}

class Note implements Serializable {
	// GOOD: serialVersionUID is of the correct type
	private static final long serialVersionUID = 1L;
}

参考

  • ©GitHub, Inc.
  • 条款
  • 隐私