深入理解Java对象序列化

深入理解Java对象序列化

ID:42065739

大小:205.56 KB

页数:28页

时间:2019-09-07

深入理解Java对象序列化_第1页
深入理解Java对象序列化_第2页
深入理解Java对象序列化_第3页
深入理解Java对象序列化_第4页
深入理解Java对象序列化_第5页
资源描述:

《深入理解Java对象序列化》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、深入理解Java对象序列化关于Java序列化的文章早已是汗牛充栋了,本文是对我个人过往学习,理解及应用Java序列化的一个总结。此文内容涉及Java序列化的基本原理,以及多种方法对序列化形式进行定制。在撰写本文时,既参考了ThinkinginJava,EffectiveJava,JavaWorld,developerWorks中的相关文章和其它网络资料,也加入了自己的实践经验与理解,文、码并茂,希望对大家有所帮助。(持续更新中,2012.02.13最后更新)  1.什么是Java对象序列化  Java平台允

2、许我们在内存中创建可复用的Java对象,但一般情况下,只有当JVM处于运行时,这些对象才可能存在,即,这些对象的生命周期不会比JVM的生命周期更长。但在现实应用中,就可能要求在JVM停止运行之后能够保存(持久化)指定的对象,并在将来重新读取被保存的对象。Java对象序列化就能够帮助我们实现该功能。  使用Java对象序列化,在保存对象时,会把其状态保存为一组字节,在未来,再将这些字节组装成对象。必须注意地是,对象序列化保存的是对象的"状态",即它的成员变量。由此可知,对象序列化不会关注类中的静态变量。  除

3、了在持久化对象时会用到对象序列化之外,当使用RMI(远程方法调用),或在网络中传递对象时,都会用到对象序列化。Java序列化API为处理对象序列化提供了一个标准机制,该API简单易用,在本文的后续章节中将会陆续讲到。  2.简单示例  在Java中,只要一个类实现了java.io.Serializable接口,那么它就可以被序列化。此处将创建一个可序列化的类Person,本文中的所有示例将围绕着该类或其修改版。  Gender类,是一个枚举类型,表示性别  publicenumGender{MALE,FEM

4、ALE}  如果熟悉Java枚举类型的话,应该知道每个枚举类型都会默认继承类java.lang.Enum,而该类实现了Serializable接口,所以枚举类型对象都是默认可以被序列化的。  Person类,实现了Serializable接口,它包含三个字段:name,String类型;age,Integer类型;gender,Gender类型。另外,还重写该类的toString()方法,以方便打印Person实例中的内容。  publicclassPersonimplementsSerializable{

5、privateStringname=null;privateIntegerage=null;privateGendergender=null;publicPerson(){System.out.println("none-argconstructor");}publicPerson(Stringname,Integerage,Gendergender){System.out.println("argconstructor");this.name=name;this.age=age;this.gender=g

6、ender;}publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicIntegergetAge(){returnage;}publicvoidsetAge(Integerage){this.age=age;}publicGendergetGender(){returngender;}publicvoidsetGender(Gendergender){this.gender=gender;}@

7、OverridepublicStringtoString(){return"["+name+","+age+","+gender+"]";}}  SimpleSerial,是一个简单的序列化程序,它先将一个Person对象保存到文件person.out中,然后再从该文件中读出被存储的Person对象,并打印该对象。  publicclassSimpleSerial{publicstaticvoidmain(String[]args)throwsException{Filefile=newFile("pers

8、on.out");ObjectOutputStreamoout=newObjectOutputStream(newFileOutputStream(file));Personperson=newPerson("John",101,Gender.MALE);oout.writeObject(person);oout.close();ObjectInputStreamoin=newObjectInputStream(

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

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

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