java中serialVersionUID的解释

转载 2013年12月05日 15:52:57


1.serialVersionUID作用:
       序列化是为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。

2.serialVersionUID有两种生成方式:
       1)一个是默认的1L,比如:private static final long serialVersionUID = 1L;
       2)一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:
       private static final   long     serialVersionUID = xxxxL;

3.当你一个类实现了Serializable接口,如果没有定义serialVersionUID,Eclipse会提供这个提示功能告诉你去定义 。

在Eclipse中点击类中warning的图标一下,Eclipse就会自动给定两种生成的方式。如果不想定义它,在Eclipse的设置中也可以把它关掉的,设置如下:
        Window ==> Preferences ==> Java ==> Compiler ==> Error/Warnings ==>Potential programming problems
        将Serializable class without serialVersionUID的warning改成ignore即可。

4.如果你没有考虑到兼容性问题时,就把它关掉,不过有这个功能是好的,只要任何类别实现了Serializable这个接口的话,如果没有加入serialVersionUID,Eclipse都会给你warning提示,这个serialVersionUID为了让该类别Serializable向后兼容。如果你的类Serialized存到硬盘上面后,可是后来你却更改了类别的field(增加或减少或改名),当你Deserialize时,就会出现Exception的,这样就会造成不兼容性的问题。但当serialVersionUID相同时,它就会将不一样的field以type的预设值Deserialize,可避开不兼容性问题。




本文转自:http://www.blogjava.net/invisibletank/archive/2007/11/15/160684.html





转自:

相关文章推荐

Java中serialVersionUID的解释

  • 2011年09月02日 11:15
  • 13KB
  • 下载

java中序列化的serialVersionUID解释

serialVersionUID: 字面意思上是序列化的版本号,这个在刚刚接触java编程时,学序列化大家一般都不会注意到,在你一个类序列化后除非你强制去掉了myeclipse中warning的功能,...

java中序列化的serialVersionUID解释

serialVersionUID: 字面意思上是序列化的版本号,这个在刚刚接触java编程时,学序列化大家一般都不会注意到,在你一个类序列化后除非你强制去掉了myeclipse中warning的功能,...
  • cselmu9
  • cselmu9
  • 2014年12月13日 11:58
  • 586

Java中serialVersionUID的解释

serialVersionUID作用:        序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。 有两种生成方式:        一个是默认的1L,比如:priv...

Java Serializable序列化,反序列化 ,serialVersionUID的作用

Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。如此可以把对象转换成字节流,可以进行网络传输,保持到本地文件,数据库等,增加对象的生命周...

java文件中为什么会有serialVersionUID

java文件中为什么会有serialVersionUID

java对象流重载 serialVersionUID 属性

一些java类中为什么需要重载 serialVersionUID 属性。  在Java中,软件的兼容性是一个大问题,尤其在使用到对象串行性的时候,那么在某一个对象已经被串行化了,可是这个对象又被修改后...
  • hzp666
  • hzp666
  • 2016年12月15日 10:35
  • 96

[Java]serialVersionUID是干什么用的?(一)

听大侠们说,偶尔看看Java源码,可以提升编程功力,赶紧屁颠屁颠下载了一份。先研究哪个类好呢?平常用最多的类就是字符串操作了,先看String类吧。上来就被这行代码吸引住了:private stati...

深入理解Java序列化中的SerialVersionUid

一、前言 SerialVersionUid,简言之,其目的是序列化对象版本控制,有关各版本反序列化时是否兼容。如果在新版本中这个值修改了,新版本就不 兼容旧版本,反序列化时会抛出InvalidC...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java中serialVersionUID的解释
举报原因:
原因补充:

(最多只允许输入30个字)