SerialVersionUID 关键字在 Java 中的重要性?\n


SerialVersionUID

  • 在 Java 中,**SerialVersionUID **必须声明为 **private static final long** 变量。此数字是编译器根据类的状态和类属性计算的。此数字有助于 JVM 在从文件中读取对象的状态时标识对象的状态。
  • **SerialVersionUID **可以在 **反序列化**过程中使用,以验证已序列化的对象的发送方和接收方针对该对象加载了兼容的类,与 **序列化**相关。如果反序列化对象与序列化不同,则可能会抛出 **InvalidClassException**。
  • 如果未指定 **serialVersionUID **,则运行时将基于类的各个方面为该类计算 **默认的 serialVersionUID** 值。

范例

import java.io.*;
class Employee implements Serializable {
   private static final long serialVersionUID = 5462223600l;
   int empId;
   String name;
   String location;
   Employee(int empId, String name, String location) {
      this.empId = empId;
      this.name = name;
      this.location = location;
   }
   void empData() {
      System.out.println("Employee Id is: "+ empId);
      System.out.println("Employee Name is: "+ name);
      System.out.println("Employee Location is: "+ location);
   }
}
public class EmployeeTest {
   public static void main(String[] args)throws Exception{
      Employee emp = new Employee(115, "Raja", "Hyderabad");
      emp.empData();
      FileOutputStream fos = new FileOutputStream("E:\Employee.txt");
      ObjectOutputStream oos = new ObjectOutputStream(fos);
      oos.writeObject(emp);
      System.out.println("Object Serialized");
   }
}

输出

Employee Id is: 115
Employee Name is: Raja
Employee Location is: Hyderabad
Object Serialized


更新于: 02-Jul-2020

6K+ 浏览

开启您的 职业

完成课程获取认证

开始
广告