文档详情

对象的序列化存储:Serializable 和 Parceable精要.docx

发布:2017-04-06约6.94千字共9页下载文档
文本预览下载声明
对象的序列化存储:Serializable和Parceable简单来说,序列化就是将我们生成的对象进行存储起来(比如磁盘上),以用来将来使用或者在网络上进行传输,而反序列化呢,就是由我们的之前序列化生成的二进制串重新生成对象的过程。注意,这里我们反复说的序列化啦,反序列化啦,都是针对的对象,而非类。作者:i_seek_u来源:segmentfault|2016-12-05 18:32?收藏??分享在进行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();??????????//?反序列化?????????//?注意,这里后面的
显示全部
相似文档