设为首页 加入收藏

TOP

Java对象序列化(三)
2014-11-23 19:53:04 来源: 作者: 【 】 浏览:59
Tags:Java 对象 序列化
serialVersionUID = -2805284943658356093,
local class serialVersionUID = 3419534311899376629



上例异常信息中的数字串表示类定义里各种属性的编码值:


●类的名字(Save)。


●域的名字(name)。


●方法的名字(Save)。


●已实现的接口(Serializable)。


改动上述任意一项内容(无论是增加或删除),都会引起编码值变化,从而引起类似的异常警报。这个数字序列称为“串行化版本统一标识符”(serial version universal identifier),简称UID。解决这个问题的办法是在类里面新增一个域serialVersionUID,强制类仍旧使用原来的UID。新增的域必须是:


●static:该域定义的属性作用于整个类,而非特定的对象。


●final:保证代码运行期间该域不会被修改。


●long:它是一个64位的数值。


也就是说,新增的serialVersionUID必须定义成下面这种形式:static final long serialVersionUID=-2805284943658356093L;。其中数字后面加上的L表示这是一个long值。


当然,改动之后的类不一定能够和原来的对象兼容。例如,如果把一个域的定义从String改成了int,执行逆-串行化操作时系统就不知道如何处理该值,显示出错误信息:java.io.InvalidClassException: Save; incompatible types for field name。


首页 上一页 1 2 3 4 下一页 尾页 3/4/4
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Linux下用C实现Ping监测与HTTP报.. 下一篇Python向PHP发起GET与POST请求

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: