欢迎来到天天文库
浏览记录
ID:30877111
大小:105.00 KB
页数:11页
时间:2019-01-03
《深入分析java的序列化与反序列化-java开发java经验技巧》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、深入分析Java的序列化与反序列化-编程开发技术深入分析Java的序列化与反序列化原文出处:Hollis序列化是一种对象持久化的手段。普遍应用在网络传输、RM等场景中。本文通过分析ArrayList的序列化來介绍Jeivei序列化的相关内容。主要涉及到以卜•几个问题:怎么实现Java的序列化为什么实现了java.io.Serializable接口才能被序列化transient的作用是什么怎么自定义序列化策略自定义的序列化策略是如何被调用的ArrayList对序列化的实现有什么好处Java对象的序列化Java平台允许我们在内存中创建可复用的Jewel对象,但一般情况下,只有当JVM处于
2、运行时,这些对彖才可能存在,即,这些对彖的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。使用兀腹对象序列化,在保存对象时,会把其状态保存为一组字节,在未來,再将这些字节组装成对彖。必须注意地是,对彖序列化保存的是对彖的”状态”,即它的成员变量。由此可知,对象序列化不会关注类中的静态变量。除了在持久化对象时会用到对象序列化之外,当使用RMI(远程方法调用),或在网络中传递对象时,都会用到对象序列化。Java序列化API为处理对象序列化提供了一个标准
3、机制,该API简单易用。如何对Java对象进行序列化与反序列化在Java中,只要一个类实现了java.io.Serializable接口,那么它就可以被序列化。这里先來一段代码:code1创建一个User类,用于序列化及反序列化packagecom.hollis;importjava.io.Serializable;importjava.util.Date;/***Createdbyhollison16/2/2.*/publicclassUserimplementsSerializable{privatcStringname;privateintage;privateDatebirt
4、hday;privatetransientStringgender;privatestaticfinallongserialVersionUID=-6849794470754667710L;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this,name=name;}publicintgetAgeO{returnage;}publicvoidsetAge(intage){this,age=age;}publicDategetBirthday(){returnbirthday;}publicvoidset
5、Birthday(Datebirthday){this.birthday二birthday;}publicStringgetGcnder(){returngender;publicvoidsetGender(Stringgender){this,gender=gender;}©OverridepublicStringtoStringO{return〃User{〃+name=+name++〃〃.,age=+age+气gender=,z+gender+气birthday二〃+birthday+}}code2对User进彳亍序列化及反序列化的Demopackagecom.hollis;i
6、mportorg.apache,commons,io.FileUtils;importorg.apache,commons.io.IOUtils;importjava,io.*;importjava.util.Date;/***Createdbyhollison16/2/2.*/publicclassScrializablcDcmo{publicstaticvoidmain(String[]args){//InitializesTheObjectUseruser二newUser();user.sctNamc(〃hollis〃);user.setGender(zzmale,z);use
7、r.setAge(23);user.setBirthday(newDate());System,out.println(user);//WriteObjtoFileObjectOutputStreamoos=null;try{oos=newObjectOutputStream(newFilcOutputStrcam(,ztcmpFi10?,));oos.writeObject(user);}catch(lOExceptione){e.printStackT
此文档下载收益归作者所有