java对象的序列化和反序列化实践

java对象的序列化和反序列化实践

ID:14286566

大小:37.50 KB

页数:5页

时间:2018-07-27

java对象的序列化和反序列化实践_第1页
java对象的序列化和反序列化实践_第2页
java对象的序列化和反序列化实践_第3页
java对象的序列化和反序列化实践_第4页
java对象的序列化和反序列化实践_第5页
资源描述:

《java对象的序列化和反序列化实践》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、Java对象的序列化和反序列化实践2007-09-1909:01 来源:论坛整理 作者:佚名 责任编辑:方舟·yesky 评论(0)  当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。  把Java对象转换为字节序列的过程称为对象的序列化。  把字节序列恢复为Java对象的过程称为对象的反序列化。  对象的序列化主要有两种用途:  1)把对象的字节序列永久地保存到硬盘上,通常存放在一个文件

2、中;  2)在网络上传送对象的字节序列。  一.JDK类库中的序列化API  java.io.ObjectOutputStream代表对象输出流,它的writeObject(Objectobj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。  java.io.ObjectInputStream代表对象输入流,它的readObject()方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。、  只有实现了Serializable和Externalizable接口的类的对象才能被序列化。Externaliza

3、ble接口继承自Serializable接口,实现Externalizable接口的类完全由自身来控制序列化的行为,而仅实现Serializable接口的类可以采用默认的序列化方式。  对象序列化包括如下步骤:  1)创建一个对象输出流,它可以包装一个其他类型的目标输出流,如文件输出流;  2)通过对象输出流的writeObject()方法写对象。  对象反序列化的步骤如下:  1)创建一个对象输入流,它可以包装一个其他类型的源输入流,如文件输入流;  2)通过对象输入流的readObject()方法读取对象。  下面让我们来看一个对应的例子,类的内容如下:

4、importjava.io.*;importjava.util.Date;/***对象的序列化和反序列化测试类.*@authorAmigoXie*@version1.0*Creationdate:2007-9-15-下午21:45:48*/publicclassObjectSaver{ /** *@paramargs *@authorAmigoXie *Creationdate:200

5、7-9-15-下午21:45:37 */publicstaticvoidmain(String[]args)throwsException{ ObjectOutputStreamout=newObjectOutputStream(newFileOutputStream("D:""objectFile.obj")); //序列化对象 Customercustomer=newCustomer("阿蜜果",24); out.writeObject("你好!"); out.writeObject(newDate()); out.writeObject(custome

6、r); out.writeInt(123);//写入基本类型数据 out.close(); //反序列化对象 ObjectInputStreamin=newObjectInputStream(newFileInputStream("D:""objectFile.obj")); System.out.println("obj1="+(String)in.readObject()); System.out.println("obj2="+(Date)in.readObject()); Customerobj3=(Customer)in.readObject();

7、 System.out.println("obj3="+obj3); intobj4=in.readInt(); System.out.println("obj4="+obj4); in.close();}}classCustomerimplementsSerializable{privateStringname;privateintage;publicCustomer(Stringname,intage){this.name=name;this.age=age;}publicStringtoString(){return"name="+name+",age

8、="+age;}}  输出结果如下:obj1=你好!

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

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

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