- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
对象的序列化存储Serializable和Parceable
对象的序列化存储:Serializable 和 Parceable简单来说,序列化就是将我们生成的对象进行存储起来(比如磁盘上),以用来将来使用或者在网络上进行传输,而反序列化呢,就是由我们的之前序列化生成的二进制串重新生成对象的过程。注意,这里我们反复说的序列化啦,反序列化啦,都是针对的对象,而非类。作者:i_seek_u来源:segmentfault|2016-12-05 18:32javascript:favorBox(open);?收藏 javascript:;?分享 在进行Android开发的时候我们有时候需要用到数据的持久化存储,或者在进程之间传递数据。其中就可能需要用到对象的序列化,经过序列化的对象之后可以通过Intent或者Boundle来传输了。接下来还是想些介绍下吧。1.什么叫序列化,什么叫反序列化序列化: 将数据结构或对象转换成二进制串的过程。反序列化:将在序列化过程中所生成的二进制串转换成数据结构或者对象的过程。简单来说,序列化就是将我们生成的对象进行存储起来(比如磁盘上),以用来将来使用或者在网络上进行传输,而反序列化呢,就是由我们的之前序列化生成的二进制串重新生成对象的过程。注意,这里我们反复说的序列化啦,反序列化啦,都是针对的对象,而非类。因为我们是针对对象进行存取与传输的,而非类,当我们需要重新获取之前的对象的时候,是直接读取出来的(从文件或网络中),而非根据类new出一个对象,这点是需要注意的。2.如何序列化序列话的方式有两种,一种是实现Serializable接口,一种是实现Parceable接口,下面会具体介绍这两种方式。a.实现Serializable接口这种序列化方式是Java提供的,它的优点是简单,其实Serializable接口是个空接口,因而我们并不需要实现什么抽象方法,但是我们却往往需要在类中声明一个静态变量标识(serialVersionUID),但这不是必须的,我们不声明,依然可以实现序列化,但是这样的话会对反序列化产生一定的影响,可能会在我们对类做了修改之后而造成对象的反序列化失败。声明方式如下:private?static?final?long?serialVersionUID?=?8711368828010083044L;?注意,这里的值可以是任意值。下面我们来具体实现下。package?com.qc.admin.myserializableparceabledemo;??import?java.io.Serializable;??/**??*?Created?by?admin?on?2016/12/1.??*/??public?class?User?implements?Serializable?{???private?static?final?long?serialVersionUID?=?519067123721295773L;???public?int?userId;??public?String?userName;??public?boolean?isMale;???public?User(int?userId,?String?userName,?boolean?isMale)?{???this.userId?=?userId;??this.userName?=?userName;??this.isMale?=?isMale;???}???@Override??public?String?toString()?{??return?User{??+??userId?=??+?userId?+??,?userName?=??+?userName?+??,?isMale?=??+?isMale?+???};??}?}??下面是序列化与反序列化过程:private?void?beginSerizable()?throws?IOException,?ClassNotFoundException?{???//?序列化??User?user?=?new?User(2016,?qian,?true);??ObjectOutputStream?out?=?new?ObjectOutputStream(new?FileOutputStream(new?File(getFilesDir(),?myfile.txt)));??out.writeObject(user);??out.close();???//?反序列化??//?注意,这里后面的“/myfile.txt”前面有个斜杠“/”,否则会报“FileNotFoundException”异常??ObjectInputStream?in?=?new?ObjectInputStream(new?FileInputStream(get
文档评论(0)