繁体   English   中英

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

[英]Should serialVersionUID be unique for different classes?

class A implements Serializable{
    private static final long serialVersionUID = 5L;
    ...
}

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

那么有必要为这两个类提供唯一的serialVersionUID

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

我阅读了以下链接

为什么生成长的 serialVersionUID 而不是简单的 1L?

什么是 serialVersionUID,为什么要使用它?

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

聚苯乙烯
Eclipse 甚至建议您将serialVersionID设置为默认值1L

需要serialVersionUID来记住类的版本。 序列化和反序列化时应该相同。 提供这个值而不是 JVM 分配一个值是一个很好的编程习惯(通常它是散列)。 两个类不必具有唯一值。

serialVersionUID可以是任何东西。

但最佳实践是从最低的数字(例如0L )开始,并在您对影响序列化的类进行更改时更新它,例如,添加/更新/删除字段,在这种情况下,您应该增加版本号从0L1L等等。

SerialVersionUUID 是编译器用来序列化/反序列化对象的标识符。 此 ID 是该类的私有成员。

为每个可序列化创建新的 uuid 有助于控制序列化/反序列化过程,但它不需要在不同的类中是唯一的。

是的,两个不同的类可能具有相同的serialVersionUID变量。但是更喜欢为每个类使用唯一的一个。还要使用8到10位数的长度而不是1作为值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM