首页

类序列化时添加serialVersionUID属性起什么作用?

标签:java,java基础,序列化,serialVersionUID,问题解答     发布时间:2015-06-14   

问题解答

在对类进行序列化标识时,常常用serialVersionUID设置一个静态final属性来表明类间不同版本的兼容性,该属性是必须的,即使没有显示的定义该属性,java序列化过程中会根据class文件自动生成一个serialVersionUID作为该类序列化版本ID号,只有同义词编译的class才会生成相同的serialVersionUID。在反序列化过程中,jvm虚拟机会把接受的字节流serialVersionUID和本地类serialVersionUID进行对比,如果相同就可以反序列化,否则会抛出InvalidClassException异常。如不希望每次编译更新都强制划分版本,可以直接显示的定义一个名为serialVersionUID这样就不会抛出异常了,如下所示:

public  TstPo  implements Serializable{@b@    private static final long serialVersionUID = -1L;@b@    ...    @b@}