serialVersionUID的作用

Posted 帝国攻城狮

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了serialVersionUID的作用相关的知识,希望对你有一定的参考价值。

Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。在进行反序列化时,JVM会把传来的字节流中的serialVersionUID与本地相应实体(类)的serialVersionUID进行比较,如果相同就认为是一致的,可以进行反序列化,否则就会出现序列化版本不一致的异常。

 

Serializable接口:

1.序列化的作用

用于将各种对象的状态保存在内存中,并且可以读取出来

2.适用情况

(1)当需要把内存中的对象状态保存在一个文件或者数据库的时候

(2)当使用套接字在网络中传输对象的时候

 


凡是实现Serializable接口的类都有一个表示序列化版本标识符的静态变量:private static final long serialVersionUID; 

类的serialVersionUID的默认值完全依赖于Java编译器的实现,对于同一个类,用不同的Java编译器编译,有可能会导致不同的serialVersionUID,也有可能相同。为了提高serialVersionUID的独立性和确定性,强烈建议在一个可序列化类中显示的定义serialVersionUID,为它赋予明确的值。显式地定义serialVersionUID有两种用途: 

  1)在某些场合,希望类的不同版本对序列化兼容,因此需要确保类的不同版本具有相同的serialVersionUID;在某些场合,不希望类的不同版本对序列化兼容,因此需要确保类的不同版本具有不同的serialVersionUID。

  2)当你序列化了一个类实例后,希望更改一个字段或添加一个字段,不设置serialVersionUID,所做的任何更改都将导致无法反序化旧有实例,并在反序列化时抛出一个异常。如果你添加了serialVersionUID,在反序列旧有实例时,新添加或更改的字段值将设为初始化值(对象为null,基本类型为相应的初始默认值),字段被删除将不设置。

以上是关于serialVersionUID的作用的主要内容,如果未能解决你的问题,请参考以下文章

serialVersionUID作用

serialVersionUID的作用

转:serialVersionUID作用

serialVersionUID的作用

serialVersionUID介绍与作用

serialVersionUID的作用以及IDEAEclipse如何自动生成serialVersionUID