如果可序列化的类未显式声明一个 serialVersionUID,则序列化运行时将根据serialVersionUID该类的各个方面为该类计算默认值,如Java对象序列化规范中所述。
但是,强烈建议所有可序列化的类显式声明serialVersionUID值,因为默认serialVersionUID计算对类详细信息高度敏感,而类详细信息可能会根据编译器的实现而有所不同,因此可能在InvalidClassExceptions反序列化期间导致意外情况。
因此,为了保证serialVersionUID不同Java编译器实现之间的值一致,可序列化的类必须声明一个显式serialVersionUID值。还强烈建议明确serialVersionUID声明尽可能使用private修饰符,因为此类声明仅适用于立即声明的类-serialVersionUID字段作为继承成员没有用。