The
serialization runtime associates with each serializable class a
version number, called a serialVersionUID, which is used during
deserialization to verify that the sender and receiver of a
serialized object have loaded classes for that object that are
compatible with respect to serialization. If the receiver has loaded
a class for the object that has a different serialVersionUID than
that of the corresponding sender's class, then deserialization will
result in an
If
a serializable class does not explicitly declare a serialVersionUID,
then the serialization runtime will calculate a default
serialVersionUID value for that class based on various aspects of the
class, as described in the Java(TM) Object Serialization
Specification. However, it is strongly
recommended that
all serializable classes explicitly declare serialVersionUID values,
since the default serialVersionUID computation is highly sensitive to
class details that may vary depending on compiler implementations,
and can thus result in unexpected
序列化运行时使用一个称为
serialVersionUID
的版本号与每个可序列化类相关联,该序列号在反序列化过程中用于验证序列化对象的发送者和接收者是否为该对象加载了与序列化兼容的类。如果接收者加载的该对象的类的
serialVersionUID
与对应的发送者的类的版本号不同,则反序列化将会导致
如果可序列化类未显式声明
serialVersionUID,则序列化运行时将基于该类的各个方面计算该类的默认
serialVersionUID
值,如“Java(TM)
对象序列化规范”中所述。不过,强烈建议所有可序列化类都显式声明
serialVersionUID
值,原因是计算默认的
serialVersionUID
对类的详细信息具有较高的敏感性,根据编译器实现的不同可能千差万别,这样在反序列化过程中可能会导致意外的
|
About serialVersionUID
最新推荐文章于 2022-08-12 23:48:16 发布