java序列化原理机制浅谈

java序列化原理机制浅谈

ID:46460649

大小:136.50 KB

页数:14页

时间:2019-11-24

java序列化原理机制浅谈_第1页
java序列化原理机制浅谈_第2页
java序列化原理机制浅谈_第3页
java序列化原理机制浅谈_第4页
java序列化原理机制浅谈_第5页
资源描述:

《java序列化原理机制浅谈》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、什么是序列化java'P的序列化(serialization)机制能够将一个实例对象的状态信息写入到一个字节流中,使其町以通过socket进行传输、或者持久化存储到数据库或文件系统中;然后在需耍的时候,可以读取字节流中的信息來重构一个相同的对象。序列化机制在java屮有看广泛的应用,EJB、RMI、hessian等技术都是以此为基础的。so,序列化一般用于以下-场景:1:永久性保存对彖,保存对彖的字节序列到本地文件或者数据库中2:通过序列化以字节流的形式使对彖在网络中进行传递和接收;3:通过序列化在进程间传递对象。接下來我们将从序列化机

2、制原理等方面进行剖析如何序列化一个对象类通过实现java.io.Serializable接口以启用其序列化功能。耒实现此接口的类将无法使其任何状态序列化或反序列化。可序列化类的所有子类型本身都是可序列化的。序列化接口没有方法或字段,仅用于标识可序列化的语义。1:我们先来看看一个例子将对彖序列化为一个字节流10publicclassTestSerialimplementsSerializable{1112publicbyteversion=10;13publicbytecount=0;1415日publicvoidf(){16System

3、,out.printin(rrhellon);17}1819^202122232425272830313233343536373839publicstaticvoidir.ain(Stringargs[])throwsIOException^Exception{FlleOutputStrearr.fos=newFileOutputStrearr.(riterr.p.outn);ObjecrOutputStreair.oos=newObjectOutputStreair.(fos);TestSerialts=newTestSerial()

4、;oos.writeObject(oos•flush();oos•close();FllelnputStrearr.fis=newFilelnputStrearr.(nterr.p.outn);ObjectInputStreair.oin=newObjectlnputStreair.(fis);TestSerialtsl=(TestSerial)oin-readObject();System.out.printin(nver3ion=n+tsl.version);4042}我们将对象序列化并输出。ObjectOutputStream能把

5、Object输出成Byte流。…上图显示的20tj-26行我们将Byte流暂时存储到temp.out文件里。而在33行・39行,我们利用反序列化,根据字节流重建对象。从上面代码中,我们不难看出,序列化和反序列化的俩个主耍类:ObjectOutputStream.Objectinputstreamo序列化后的内容通过上面的例子我们知道,对象被序列化存在至文件temp.out屮,我们可以通过工具UltraEdit以16进制方式打开该文件,看看它里而是以什么样的形式存在组织我们的对彖的。ACED000573720015746573745365

6、7269;..sz..testSeri616C2E5465737453657269616CAE18B4;&:L・TestSerial??BEOF0439EC020002420005636F756E74;?・9?・・B・・count42000776657273696F6E78700064;审・versionxp・d毎一行分号后血的内容都是前面16进制码的注释。对于这些我们先随意YY下,这些内容的组织方式应该是:1:对象类型描述2:对彖属性类型描述3対象属性值现在我们将以一个全血的例子來说明该问题:代码ascript]viewplainco

7、py1.classparentimplementsSerializable{2.intparentVersion=10;3.}4.classcontainimplementsSerializable{5・intcontainVersion=11;

8、6・}7.publicclassSerialTestextendsparentimplementsSerializable{8.intversion=66;7.containcon二newcontain();10.publicintgetVersion(){11.returnversion;1

9、2.}13.publicstaticvoidmai“(Stringargs[])throwsIOException{14.FileOutputStrearnfos=newFileOutputStream("

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。