什么是 Java 中的串行版本 ID?

2022-09-01 02:38:36

可能的重复:
我为什么要为串行VersionUID而烦恼?
什么是串行版本 ID?

当我在Eclipse中创建一个扩展java.util.logging.Level的新类时,它要求我添加一个默认或生成的串行版本ID。我只是盲目地添加,不知道它是什么以及为什么我必须添加它。

任何人都可以告诉我它是什么以及为什么需要它。


答案 1

序列版本 ID 在序列化和反序列化对象时使用。Java 可识别要反序列化的字节是否与本地类版本匹配。如果不是,它将引发异常。

在执行 RMI 或持久化对象结构时,这一点很重要。

关于在Serializable的javadoc中序列化有一个非常好的描述。


答案 2

它是类的唯一标识符,用于序列化。

如果要尽快序列化,则声明它是明智的,因为如果您不声明一个,那么在更改类时,它将自动生成一个不同的类,序列化将停止工作。

一个很好的参考在这里:http://c2.com/ppr/wiki/JavaIdioms/AlwaysDeclareSerialVersionUid.html