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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 创出一片辉煌 中级黑马   /  2012-7-31 23:24  /  2706 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

代码代码中有private static final long serialVersionUID = 1L 是怎么回事?有什么用处?

评分

参与人数 1技术分 +1 收起 理由
杨志 + 1 加油!

查看全部评分

3 个回复

倒序浏览
这个是用来表明类的不同版本间的兼容性的。如果你修改了此类,就要 要修改此值。要不然以前用的老版本的类序列化的类恢复时会出错的。为了在反序列化时,确保类版本的兼容性,最好在每个要序列化的类中都加入private static final long serialVersionUID这个属性,具体数值自己定义。  
Window-->Preferences-->Java,将serializable class without serialVersionUID的设置由warning改为Ignore。改完后Eclipse会重新编译程序,那些警告信息也就消失了.

评分

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

查看全部评分

回复 使用道具 举报
UID值的作用是标识这个类,是java根据类中的成员变量和方法自动生成的,不过我们也可以手动的给一个我们想要的值
这样做的好处就是:在我们序列化一个类以后,如果之后还有人去修改这个类的话,这个UID也是不会改变的,这样当我们需要反序列化的时候就不会出现错误
回复 使用道具 举报
王广彬 发表于 2012-7-31 23:29
这个是用来表明类的不同版本间的兼容性的。如果你修改了此类,就要 要修改此值。要不然以前用的老版本的类序 ...

``                已解决
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马