Java 默认的 serialVersionUID 生成逻辑是根据类的结构和成员属性生成一个唯一的标识符,用于标识不同版本的同一类。如果没有手动指定 serialVersionUID,则会根据以下规则生成:

  1. 如果类实现了 Serializable 接口,则 serialVersionUID 默认为 1L。

  2. 如果类中没有任何成员属性,则 serialVersionUID 默认为 1L。

  3. 如果类中有成员属性,则根据以下算法生成 serialVersionUID:

    a. 对类的结构进行哈希计算,包括类名、父类名、接口名、方法名、访问修饰符等。

    b. 对类中的每个非瞬态成员变量和非静态成员变量进行哈希计算,包括变量名、变量类型、访问修饰符等。

    c. 将步骤 a 和步骤 b 的哈希值组合起来生成 serialVersionUID。

注意事项:

  1. serialVersionUID 只有在序列化和反序列化时才会用到,如果只是普通的 Java 类,可以不用关心 serialVersionUID。

  2. 如果类的结构有任何改变,例如添加、删除或修改成员变量或方法,都会导致 serialVersionUID 发生改变。

  3. 如果需要手动指定 serialVersionUID,则建议使用常量值,例如:private static final long serialVersionUID = 123456789L;。

java 默认serialVersionUID 生成逻辑

原文地址: https://www.cveoy.top/t/topic/s6o 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录