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

java中具有相同值的多个实体类使用的serialVersionUID,java,Java,我发现我的项目中的许多实体类的serialVersionUID使用相同的值 现在,我的项目没有问题,CURD是可以的,但我认为使用相同的值是不正常的 有问题吗?不会有任何问题,因为序列号适用于每个类 编译器使用serialVersionUID来比较类的版本,以确保在尝试反序列化该类时,该类的相同版本用于序列化该类 serialVersionUID有助于序列化数据的版本控制。如果您更新其中一些类,您将能够更改其串行版本,以避免与该类的旧版本进行任何反序列化:由于UID不匹配,反序列化将不会成功。这

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

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


有问题吗?

不会有任何问题,因为序列号适用于每个类

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

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


在resume中:如果一个以上的类拥有相同的
SerialVersionUID
(f.e:
1L
),则没有问题,因为如上所述,它在每个类中都有效(这里不涉及“重复版本UID类”机制)。它就像两个独立更新的元素一样正确,现在两个元素的序列号都是一致的:只是每个元素的版本号

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

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


最后,未实现可序列化的类的
serialVersionId
0L

如果类定义了
serialVersionUID
,则从 班级

如果类未定义
serialVersionUID
,则为 根据虚拟机中类的定义计算

如果指定的类不可序列化或外部化,则为null 返回。lookupAny方法的行为与lookup方法类似,除了 它返回任何类的描述符,不管 实现可序列化。类的
serialVersionId
,该类没有 机具可序列化为
0L


不会有任何问题,因为序列号适用于每个类

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

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


在resume中:如果一个以上的类拥有相同的
SerialVersionUID
(f.e:
1L
),则没有问题,因为如上所述,它在每个类中都有效(这里不涉及“重复版本UID类”机制)。它就像两个独立更新的元素一样正确,现在两个元素的序列号都是一致的:只是每个元素的版本号

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

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


最后,未实现可序列化的类的
serialVersionId
0L

如果类定义了
serialVersionUID
,则从 班级

如果类未定义
serialVersionUID
,则为 根据虚拟机中类的定义计算

如果指定的类不可序列化或外部化,则为null 返回。lookupAny方法的行为与lookup方法类似,除了 它返回任何类的描述符,不管 实现可序列化。类的
serialVersionId
,该类没有 机具可序列化为
0L


这不应该是个问题。在下面的链接中有关于该字段的冗长讨论,但简言之,对于像这样的多个类具有相同的值没有什么可担心的,这不应该是一个问题。下面的链接对该字段进行了长时间的讨论,但简言之,对于像这样的多个类具有相同的值没有什么可担心的。嗨,这很有帮助。非常好的回答@aran。嗨,这很有帮助。非常好的回答@aran。