java_对象的序列化与反序列化讲解

java_对象的序列化与反序列化讲解

ID:6578923

大小:35.00 KB

页数:5页

时间:2018-01-18

java_对象的序列化与反序列化讲解_第1页
java_对象的序列化与反序列化讲解_第2页
java_对象的序列化与反序列化讲解_第3页
java_对象的序列化与反序列化讲解_第4页
java_对象的序列化与反序列化讲解_第5页
资源描述:

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

1、Java对象的序列化与反序列化实践当两个进程在进行远程通信时,彼此可以发送各种类型的数据。无论是何种类型的数据,都会以二进制序列的形式在网络上传送。发送方需要把这个Java对象转换为字节序列,才能在网络上传送;接收方则需要把字节序列再恢复为Java对象。  把Java对象转换为字节序列的过程称为对象的序列化。  把字节序列恢复为Java对象的过程称为对象的反序列化。  对象的序列化主要有两种用途:  1)把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;  2)在网络上传送对象的字节序列。  一.J

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

3、able接口继承自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:2007-9-15-下午21:45:37 */publicstaticvoi

5、dmain(String[]args)throwsException{ ObjectOutputStreamout=newObjectOutputStream(newFileOutputStream("D:""objectFile.obj")); //序列化对象 Customercustomer=newCustomer("阿蜜果",24); out.writeObject("你好!"); out.writeObject(newDate()); out.writeObject(customer); out.w

6、riteInt(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

7、)in.readObject(); 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;}publ

8、icStringtoString(){return"name="+name+",age="+age;}}  输出结果如下:obj1=你好!obj2=SatSep1522:02:21CST2007obj3=name=阿蜜果,age=24obj4=123  因此例比较简单,在此不再详述。  二.实现Serializable接口  ObjectOutputStream只能对Serializable接口的类的对象进行序列

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

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

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