java中多个实体类使用的serialVersionUID具有相同的值

我发现serialVersionUID我的项目中的许多实体类都使用相同的值。

现在,我的项目没有问题,CURD是可以的,但我认为使用相同的值是不正常的。

有问题吗?

回答

不会有任何问题,因为每个班级的序列号都是有效的

编译器使用serialVersionUID来比较类的版本,以保证在您尝试反序列化时使用该类相同版本进行序列化

serialVersionUID 有助于序列化数据的版本控制。如果您更新其中一些类,您将能够更改其串行版本,以避免使用旧版本的类进行任何反序列化:由于 UID 不匹配,反序列化将不会成功。这通过序列化元素的不同版本保证了数据一致性。


没问题

在简历中:如果有多个类保持相同SerialVersionUIDfe:) 1L则没有问题,因为如上所述,它适用于每个类(此处不涉及“重复版本 UID 类”机制)。它就像两个独立更新的元素一样正确,现在巧合的是,696969L它们的序列号都保持不变:它只是每个人的版本号

例如1L,声明一个永久值就像告诉编译器:相信我,这个类没有改变,只是反序列化它

1L也是为实现该Serializable接口的类提供的默认串行版本 UID ,意思是“这是第一个版本”;它也将成为那些不会改变的类的最后一个版本。


刚刚完成,serialVersionUID没有实现一类Serializable0L

Java 对象序列化规范

如果类已定义serialVersionUID,则从类中检索它。

如果serialVersionUID不是由类定义的,则根据虚拟机中类的定义计算。

如果指定的类不可序列化或外部化,则返回 null。lookupAny 方法的行为类似于 lookup 方法,不同之处在于它返回任何类的描述符,而不管它是否实现了 Serializable。在serialVersionUID不实现Serializable一类是 0L


以上是java中多个实体类使用的serialVersionUID具有相同的值的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>