serialVersionUID 对于不同的类应该是唯一的吗?

2022-09-01 18:54:16
class A implements Serializable{
    private static final long serialVersionUID = 5L;
    ...
}

class B implements Serializable{
    private static final long serialVersionUID = 6L;
    ...
}

那么有必要给两个类都唯一。serialVersionUID

那么我可以同时为这两个类分配吗?serialVersionUID = 5L

我阅读了以下链接

为什么要生成长串行VersionUID而不是简单的1L?

什么是串行版本UID,我为什么要使用它?


答案 1

是的,可以。不同类的串行版本是独立的,不会相互干扰。

PS
Eclipse甚至建议您默认设置为.serialVersionID1L


答案 2

serialVersionUID需要记住类的版本。序列化和反序列化时应该相同。提供此值而不是JVM分配一个值(通常是哈希值)是一种很好的编程实践。两个类不必具有唯一值。