java 默认serialVersionUID 生成逻辑
Java 默认的 serialVersionUID 生成逻辑是根据类的结构和成员属性生成一个唯一的标识符,用于标识不同版本的同一类。如果没有手动指定 serialVersionUID,则会根据以下规则生成:
-
如果类实现了 Serializable 接口,则 serialVersionUID 默认为 1L。
-
如果类中没有任何成员属性,则 serialVersionUID 默认为 1L。
-
如果类中有成员属性,则根据以下算法生成 serialVersionUID:
a. 对类的结构进行哈希计算,包括类名、父类名、接口名、方法名、访问修饰符等。
b. 对类中的每个非瞬态成员变量和非静态成员变量进行哈希计算,包括变量名、变量类型、访问修饰符等。
c. 将步骤 a 和步骤 b 的哈希值组合起来生成 serialVersionUID。
注意事项:
-
serialVersionUID 只有在序列化和反序列化时才会用到,如果只是普通的 Java 类,可以不用关心 serialVersionUID。
-
如果类的结构有任何改变,例如添加、删除或修改成员变量或方法,都会导致 serialVersionUID 发生改变。
-
如果需要手动指定 serialVersionUID,则建议使用常量值,例如:private static final long serialVersionUID = 123456789L;。
原文地址: https://www.cveoy.top/t/topic/s6o 著作权归作者所有。请勿转载和采集!