A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 陈家明 中级黑马   /  2013-5-7 22:39  /  1557 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 Sword 于 2013-5-8 20:35 编辑

在创建servlet时会产生一个警告,要创建一个ID。
自动生成  private static final long serialVersionUID = 1L;   //这句在起什么作用?

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

4 个回复

倒序浏览
这个是序列化的版本号,实现了 序列化接口,Java会基于类名、实现的接口、成员变量和方法来生成 serialVersionUID,这是流的唯一标识符;
还有一些高级的解释。不是很明白,期待高手来回答

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
实现java.io.Serializable这个接口是为序列化,serialVersionUID 用来表明实现序列化类的不同版本间的兼容性。如果你修改了此类, 要修改此值。否则以前用老版本的类序列化的类恢复时会出错。

实现后如果你用的是工具的话会出来警告,他会提示你,可以自动生成private static  final  long  serialVersionUID  =  1L;
为了在反序列化时,确保类版本的兼容性,最好在每个要序列化的类中加入private static final long serialVersionUID这个属性,具体数值自己定义.  
在JDK中,可以利用JDK的bin目录下的serialver.exe工具产生这个serialVersionUID,如对于Test.class可执行如下命令:serialver Test。

这样,即使某个类在与之对应的对象已经序列化出去后做了修改,该对象依然可以被正确反序列化。否则,如果不显式定义该属性,这个属性值将由JVM根据类的相关信息计算,而修改后的类的计算结果与修改前的类的计算结果往往不同,从而造成对象的反序列化因为类版本不兼容而失败。
听说新版 加分快!{:soso_e144:}
回复 使用道具 举报
实现java.io.Serializable这个接口是为序列化,serialVersionUID 用来表明实现序列化类的不同版本间的兼容性。如果你修改了此类, 要修改此值。否则以前用老版本的类序列化的类恢复时会出错。

实现后如果你用的是工具的话会出来警告,他会提示你,可以自动生成private static  final  long  serialVersionUID  =  1L;
为了在反序列化时,确保类版本的兼容性,最好在每个要序列化的类中加入private static final long serialVersionUID这个属性,具体数值自己定义.  
在JDK中,可以利用JDK的bin目录下的serialver.exe工具产生这个serialVersionUID,如对于Test.class可执行如下命令:serialver Test。

这样,即使某个类在与之对应的对象已经序列化出去后做了修改,该对象依然可以被正确反序列化。否则,如果不显式定义该属性,这个属性值将由JVM根据类的相关信息计算,而修改后的类的计算结果与修改前的类的计算结果往往不同,从而造成对象的反序列化因为类版本不兼容而失败。
听说新版 加分快!{:soso_e144:}

评分

参与人数 1技术分 +1 收起 理由
Sword + 1

查看全部评分

回复 使用道具 举报
问题如果以解决,请及时修改分类,否则继续提问问,谢谢合作!(不要嫌我烦,我感觉也挺烦躁的。这是我的责任啊)
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马