1 简介

在JDK中是一个预定义注解,指定类的序列化版本号。可用来确保在反序列化时,序列化对象的版本号与反序列化对象的版本匹配,避免因版本不匹配而导致的反序列化失败。

2 案列

Java中当一个类被序列化,会自动生成一个序列化版本号(serialVersionUID),用于确定该类的序列化版本。

反序列化时,JVM会比较序列化对象、反序列化对象的serialVersionUID是否一致,不一致则抛InvalidClassException,因此,为避免这种异常,可用@Serial注解指定类的序列化版本号,以确保序列化对象和反序列化对象的版本一致。

import java.io.Serializable;
 public class User implements Serializable {
     @Serial // 指定序列化版本号
     private static final long serialVersionUID = 1L;
     
 
     private String name;
     private int age;
     
     // 构造函数、getter和setter方法省略
 
 }

上面例子中:@Serial注解被用来指定User类的序列化版本号,版本号为1L,这样,在序列化和反序列化User对象时,就会使用该版本号来确保序列化和反序列化对象的版本一致。