- 浏览: 37286 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
lenomon:
可以看看这个demo, M2eclipse 设置 Mave ...
Maven学习笔记(二)——Eclipse插件安装(m2eclipse)
Java 规定的内部机制,实现 Serializable 接口就行了,这个接口只是个标记性的接口,表示类的设计者已经允许这个类型的对象被序列化写入磁盘或通过网络发送,对于有保密要求的东西一般不实现这个接口防止无意间复制到 jvm 内存之外。如果一个类型的多数字段可以复制但个别字段不用复制(比如,它实际上是通过其它字段计算出来的),我们可以把它标记为 transient。
默认的 serialization 对类的结构有要求,一般将来版本升级了导致服务端和客户版本不一样,或者你用新版本读取一个以前旧版本写入磁盘的序列化的对象的话,需要这两个版本是兼容的,达到这个要求至少包括下面这个字段,并且新旧两个版本的类中它的值应该是一样的,其它特殊情况规范也有办法做到,比如你的结构变了,以前 name / phone 都是 A 的字段,后来新版本创建了一个内部类叫 Contact 把 name 和 phone
并到这两个字段移到内部类 Contact 中去了的话,Java 也有办法在新版本中提供自定义 readObject/writeObject 这个过程来确保兼容旧版本。
private static final long serialVersionUID; // 在一个类的多个版本中要相同的值,对于不它的类中,它们的值不要求唯一。
http://java.sun.com/developer/technicalArticles/Programming/serialization/
serialVersionUID作用: 序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。 有两种生成方式: 一个是默认的1L,比如:private static final long se...
serialVersionUID作用:
序列化时为了保持版本的兼容性,即在版本升级时反序列化仍保持对象的唯一性。
有两种生成方式:
一个是默认的1L,比如:private static final long serialVersionUID = 1L;
一个是根据类名、接口名、成员方法及属性等来生成一个64位的哈希字段,比如:
private static final long serialVersionUID = xxxxL;
当你一个类实现了Serializable接口,如果没有定义serialVersionUID,Eclipse会提供这个
提示功能告诉你去定义 。在Eclipse中点击类中warning的图标一下,Eclipse就会
自动给定两种生成的方式。如果不想定义它,在Eclipse的设置中也
可以把它关掉的,设置如下:
Window ==> Preferences ==> Java ==> Compiler ==> Error/Warnings ==>
Potential programming problems
将Serializable class without serialVersionUID的warning改成ignore即可。
如果你没有考虑到兼容性问题时,就把它关掉,不过有这个功能是好的,只要任何类别实现了Serializable这个接口的话,如果没有加入serialVersionUID,Eclipse都会给你warning提示,这个serialVersionUID为了让该类别Serializable向后兼容。
如果你的类Serialized存到硬盘上面后,可是后来你却更改了类别的field(增加或减少或改名),当你Deserialize时,就会出现Exception的,这样就会造成不兼容性的问题。
但当serialVersionUID相同时,它就会将不一样的field以type的预设值Deserialize,可避开不兼容性问题。
发表评论
-
系统研究Java--容器(二)--使用Abstract类
2011-02-23 14:34 0这个示例在于演示通过继承java.util.Abstract来 ... -
Maven学习笔记(一)——安装与配置
2011-12-24 17:48 10701. 准备工作 操作系统 ... -
Maven学习笔记(二)——Eclipse插件安装(m2eclipse)
2011-12-24 19:06 1462如何安装Eclipse插件 关于如何安装Ecli ... -
Maven学习笔记(三)——坐标和依赖
2011-12-27 12:58 880参考书籍Maven实战:可在InfoQ的Minibook出下载 ... -
`nonmutating' is not defined (Ice)
2012-02-20 14:40 802说明出处:http://download.zeroc.com/ ... -
Java中的所有异常
2011-02-14 13:33 588原文地址:http://www.knowsky.com/540 ... -
系统研究Java--容器(一)
2011-02-14 15:12 747如上图:java完整容器的结构图 个人觉得j ... -
Java中的volatile关键字
2011-02-18 10:09 603我们知道,在Java中设 ... -
系统研究Java--数组(一)
2011-02-22 15:55 562数组不可越界,如果越界将会得到一个表示程序错误的Runtim ... -
Java反射经典实例 Java Reflection Cookbook (初级)
2011-02-23 13:09 326原文地址:http://www.blogjava.net/ji ... -
系统研究Java--容器(二)--使用Abstract类
2011-02-23 14:34 552这个示例在于演示通过继承java.util.Abstract来 ... -
系统研究Java--容器(三)--Collection
2011-02-23 15:36 584<!-- ========== METHOD SUMMA ... -
系统研究Java--容器(五)--部分容器的底层实现
2011-02-23 16:28 796List和存储顺序 从List接口展开的实现类有ArrayL ... -
系统研究Java--容器(四)--Map和Set
2011-02-23 17:59 595Map是Java容器的又一长老 ... -
系统研究Java--容器(六)--Collections工具类
2011-03-01 14:36 742<!-- ========== METHOD SUMMA ... -
系统研究Java--I/O(一)
2011-03-03 16:14 542先占个位置,来两个图 -
abstract class 与 interface 的区别
2011-03-07 11:43 651对于abstract class 和 interf ... -
Java几种常用关键字总结
2011-03-25 11:00 6291.abstract abstract关键字可以用来修 ... -
一个简单的验证码生成工具--servlet版本
2011-05-13 21:20 649需要用到servlet-api.jar package co ... -
Hibernate将Enum枚举类型映射为Int类型
2011-07-01 15:19 1122最近要用Hibernate做一个枚举类型的映射,在MySQL数 ...
相关推荐
java序列化(Serializable)的作用和反序列化.doc 有详细的讲解哦。 在什么地方用的到都有说明的.
java 的序列化与反序列化举例测试
序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保 存object states,但是Java给你提供一...
通过实现 Serializable 接口,Java对象可以被序列化和反序列化。序列化可以将对象转换为字节流,以便于存储或传输。反序列化则可以将字节流重新转换为原始对象。需要注意的是,序列化和反序列化的类必须具有相同的 ...
Java中的序列化机制有两种实现方式: 一种是实现Serializable接口 另一种是实现Externalizable接口 区别: 实现Serializable接口 1 系统自动储存必要的信息 2 Java内建支持,易于实现,只需实现该接口即可,无须任何...
Java_Serializable(序列化) 的理解和总结
java.io.Serializable序列化问题
java序列化(Serializable)的作用和反序列化.pdf
Java 中 Serializable的应用,序列化的作用说明
Serializable有一个子接口Externalizable,实现Externalizable接口的类可以自行控制对象序列化荷反序列化过程。 一般来说,没有必要自己实现序列化接口,直接交给Java虚拟机是上策。 实现了序列化接口的类,如果...
Java序列化(Serializable)与反序列化_.docx
序列化 serializable demo ! 序列化 serializable demo !
这是Java 序列化(Serializable)实现的一个例子,例子是显示文件的读写的。
Java序列化(Serializable)与反序列化__1.docx
Serializable接口和Externalizable接口实现序列化和反序列化
主要介绍了Java对象Serializable接口实现详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
java 序列化 对象 Serializable 写着玩的Demo 简单 实用
Android序列化——Serializable与Parcelable
Android通过Parcelable和Serializable实现各种类型嵌套序列化
详细讲解了C#中关于对象序列化的知识,包括基本序列化、选择序列化、自定义序列化;对于了解在C#中如何进行对象的序列化有价值