龙空技术网

serialVersionUID到底有什么用?

JAVA油腻男 1051

前言:

现在姐妹们对“java中serialversionuid生成”大概比较关心,姐妹们都想要学习一些“java中serialversionuid生成”的相关内容。那么小编也在网上网罗了一些有关“java中serialversionuid生成””的相关知识,希望大家能喜欢,你们快快来学习一下吧!

含义

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

如何使用

serialVersionUID常见的生成方式有两种:

1.默认的1L

比如:private static final long serialVersionUID = 1L;

2.根据类名、接口名、成员方法及属性等来生成一个64位的哈希值

比如:private static final long serialVersionUID = xxxxL;

当实现java.io.Serializable接口的类没有显式地定义serialVersionUID时,Java序列化机制会根据编译的class自动生成一个serialVersionUID作为当前序列化版本的值,如果class文件没有发生变化,多次编译此值不变.

如果我们不希望通过编译来强制划分Java类的版本,即实现序列化接口的类能够向前兼容,只需显式地定义一个名为serialVersionUID,类型为long的变量,并保证数值不变即可

标签: #java中serialversionuid生成