JavaSerializable(序列化)的理解和总结具体实现过程

上传人:阳*** 文档编号:95533205 上传时间:2022-05-24 格式:DOC 页数:3 大小:17.50KB
收藏 版权申诉 举报 下载
JavaSerializable(序列化)的理解和总结具体实现过程_第1页
第1页 / 共3页
JavaSerializable(序列化)的理解和总结具体实现过程_第2页
第2页 / 共3页
JavaSerializable(序列化)的理解和总结具体实现过程_第3页
第3页 / 共3页
资源描述:

《JavaSerializable(序列化)的理解和总结具体实现过程》由会员分享,可在线阅读,更多相关《JavaSerializable(序列化)的理解和总结具体实现过程(3页珍藏版)》请在装配图网上搜索。

1、Java Serializable(序列化)的理解和总结、具体实现过程1、序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。 内存中的对象是怎么存在的? 内存中各种对象的状态是? 实例变量是什么(指的是实例化的对象吗)? 2、什么情况下需要序列化 a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候; b)当你想用套接字在网络上传送对象的时候; c)当你想通过RMI传输

2、对象的时候; 使用序列化的好处是什么?3、当对一个对象实现序列化时,究竟发生了什么? 在没有序列化前,每个保存在堆(Heap)中的对象都有相应的状态(state),即实例变量(instance ariable)比如:Java代码 1. Foo myFoo = new Foo(); 2. myFoo .setWidth(37); 3. myFoo.setHeight(70); 当通过下面的代码序列化之后,MyFoo对象中的width和Height实例变量的值(37,70)都被保存到foo.ser文件中,这样以后又可以把它 从文件中读出来,重新在堆中创建原来的对象。当然保存时候不仅仅是保存对象的实

3、例变量的值,JVM还要保存一些小量信息,比如类的类型等以便恢复原来的对象。Java代码 1. fs = new (foo.ser); 2. ObjectOutputStream os = new ObjectOutputStream(fs); 3. os.writeObject(myFoo); 4、实现序列化(保存到一个文件)的步骤 a)Make a Java代码 1. fs = new (foo.ser); b)Make a ObjectOutputStream Java代码 1. ObjectOutputStream os = new ObjectOutputStream(fs); c)w

4、rite the object Java代码 1. os.writeObject(myObject1); 2. os.writeObject(myObject2); 3. os.writeObject(myObject3); d) close the ObjectOutputStream Java代码 1. os.close(); 5、举例说明Java代码 1. import java.io.*; 2. 3. 4. public class Box implements Serializable 5. 6. private int width; 7. private int height; 8

5、. 9. public void setWidth(int width) 10. this.width = width; 11. 12. public void setHeight(int height) 13. this.height = height; 14. 15. 16. public static void main(String args) 17. Box myBox = new Box(); 18. myBox.setWidth(50); 19. myBox.setHeight(30); 20. 21. try 22. fs = new (foo.ser); 23. Object

6、OutputStream os = new ObjectOutputStream(fs); 24. os.writeObject(myBox); 25. os.close(); 26. catch(Exception ex) 27. ex.printStackTrace(); 28. 29. 30. 31. 6、相关注意事项 a)序列化时,只对对象的状态进行保存,而不管对象的方法; b)当一个父类实现序列化,子类自动实现序列化,不需要显式实现Serializable接口; c)当一个对象的实例变量引用其他对象,序列化该对象时也把引用对象进行序列化; d)并非所有的对象都可以序列化,,至于为什么不可以,有很多原因了,比如: 1.安全方面的原因,比如一个对象拥有private,public等field,对于一个要传输的对象,比如写到文件,或者进行rmi传输 等等,在序列化进行传输的过程中,这个对象的private等域是不受保护的。 2. 资源分配方面的原因,比如socket,thread类,如果可以序列化,进行传输或者保存,也无法对他们进行重新的资源分 配,而且,也是没有必要这样实现。3 / 3文档可自由编辑打印

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!