黑马程序员技术交流社区

标题: 关于序列化的问题 [打印本页]

作者: 杨银川    时间: 2011-12-14 17:08
标题: 关于序列化的问题
本帖最后由 杨银川 于 2011-12-14 22:50 编辑

想问一下,关于private static final long serialVersionUID = xxxL;其中的xxx在定义上有什么需要注意的,还有这句话在实际开发过程中怎么用的,用的多吗,谢谢
作者: 郝锡强    时间: 2011-12-14 18:20
本帖最后由 晨曦 于 2011-12-14 18:22 编辑

类型为long的变量
serialVersionUID 用来表明类的不同版本间的兼容性 简单来说,Java的序列化机制是通过在运行时判断类的serialVersionUID来验证版本一致性的。javabean对象只要继承了Serializable接口,在序列化时都会有个唯一标识,用来区分各个版本.这个唯一的标识就是serialVersionUID属性指定的;默认情况下可以不指定,但是推荐指定; 比如用IDE:JB开发,不会有任何问题;但是如果又用IDE:Eclipse开发,则会有warning级别的提示。
记得以前不是那里看过,貌似不用管呢?{:soso_e117:}
作者: 马伟奇    时间: 2011-12-14 19:58
 一:对象序列化可以完成散布式对象。 主要应用例如:rmi要应用对象序列化运行近程主机上的服务, 就像在本地机上运行对象时一样。

  二:java对象序列化不只保留一个对象的数据, 而且递归保存对象援用的每个对象的数据。 可以将整个对象层次写入字节流中, 可以保存在文件中或在网络衔接上传递。 应用对象序列化可以进行对象的"深复制", 即复制对象自身及援用的对象自身。 序列化一个对象能够失掉整个对象序列。

  类经过完成java. io. serializable接口以启用其序列化功能。 未完成此接口的类将无法使其任何形态序列化或反序列化。 可序列化类的一切子类型自身都是可序列化的。 序列化接口没有方法或字段, 仅用于标识可序列化的语义。

  要允许不可序列化类的子类型序列化, 可以假定该子类型负责保存和还原超类型的公用(public)、受保护的(protected)和(如果可访问)包(package)字段的形态。 仅在子类型扩展的类有一个可访问的无参数构造方法来初始化该类的形态时, 才可以假定子类型有此责任。 如果不是这种情况, 则声明一个类为可序列化类是错误的。 该错误将在运行时检测到。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2