java序列化(Serializable)作用与反序列化.doc

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
java序列化(Serializable)的作用和反序列化 1、序列化是干什么的?? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保 存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。 2、什么情况下需要序列化 a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候; b)当你想用套接字在网络上传送对象的时候; c)当你想通过RMI传输对象的时候; 3、当对一个对象实现序列化时,究竟发生了什么? 在没有序列化前,每个保存在堆(Heap)中的对象都有相应的状态(state),即实例变量(instance ariable)比如: java 代码 Foo? myFoo = new Foo(); myFoo .setWidth(37); myFoo.setHeight(70); 当 通过下面的代码序列化之后,MyFoo对象中的width和Height实例变量的值(37,70)都被保存到foo.ser文件中,这样以后又可以把它 从文件中读出来,重新在堆中创建原来的对象。当然保存时候不仅仅是保存对象的实例变量的值,JVM还要保存一些小量信息,比如类的类型等以便恢复原来的对 象。 java 代码 FileOutputStream fs = new FileOutputStream(foo.ser); ObjectOutputStream os = new ObjectOutputStream(fs); os.writeObject(myFoo); 4、实现序列化(保存到一个文件)的步骤? a、Make a FileOutputStream java 代码 FileOutputStream fs = new FileOutputStream(“foo.ser”); b、Make a ObjectOutputStream java 代码 ObjectOutputStream os =? new ObjectOutputStream(fs); c、write the object java 代码 os.writeObject(myObject1); os.writeObject(myObject2); os.writeObject(myObject3); d、 close the ObjectOutputStream java 代码 os.close(); 5、举例说明 Java代码 package?com.hotye.dchaoxiong.serializabletest; import?java.io.FileInputStream; import?java.io.FileOutputStream; import?java.io.ObjectInputStream; import?java.io.ObjectOutputStream; import?java.io.Serializable; public?class?Box?implements?Serializable?{ private?static?final?long?serialVersionUID?=?1L; private?int?width; private?int?height; private?String?name; public?static?void?main(String[]?args)?{ try?{ Box?myBox?=?new?Box(); myBox.setWidth(50); myBox.setHeight(30); myBox.setName(“雕戈”); FileOutputStream?fs?=?new?FileOutputStream(“serializableObject.txt”); ObjectOutputStream?os?=?new?ObjectOutputStream(fs); os.writeObject(myBox); os.close(); fs.close(); }?catch?(Exception?ex)?{ ex.printStackTrace(); } try?{ FileInputStream?fis?=?new?FileInputStream(“serializableObject.txt”); ObjectInputStream?ois?=?new?ObjectInputStream(fis); Box?box?=?(Box)?ois.readObject(); System.out.println(box.getWidth()); System.out

文档评论(0)

sy78219 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档