全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Java Serializable(序列化)的理解和总结、具体实现过程1、序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例变量,不是方法),并且可以把保存的对象状态再读出来。虽然你可以用你自己的各种各样的方法来保存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。 内存中的对象是怎么存在的? 内存中各种对象的状态是? 实例变量是什么(指的是实例化的对象吗)? 2、什么情况下需要序列化 a)当你想把的内存中的对象状态保存到一个文件中或者数据库中时候; b)当你想用套接字在网络上传送对象的时候; c)当你想通过RMI传输对象的时候; 使用序列化的好处是什么?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文件中,这样以后又可以把它 从文件中读出来,重新在堆中创建原来的对象。当然保存时候不仅仅是保存对象的实例变量的值,JVM还要保存一些小量信息,比如类的类型等以便恢复原来的对象。Java代码 1. FileOutputStream fs = new FileOutputStream(foo.ser); 2. ObjectOutputStream os = new ObjectOutputStream(fs); 3. os.writeObject(myFoo); 4、实现序列化(保存到一个文件)的步骤 a)Make a FileOutputStream Java代码 1. FileOutputStream fs = new FileOutputStream(foo.ser); b)Make a ObjectOutputStream Java代码 1. ObjectOutputStream os = new ObjectOutputStream(fs); c)write 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. 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. FileOutputStream fs = new FileOutputStream(foo.ser); 23. ObjectOutputStream 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传输 等等,在序列化进行传输
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 药品集中招标合作协议样本
- 学校网络升级国防光缆施工合同
- 养殖行业培训租赁协议
- 退休工程师技术支持合同
- 机场航站楼幕墙安装协议
- 舞蹈室租赁合同
- 酒店屋顶防水维护服务合同
- 医疗卫生合作的经济合同管理办法
- 暂停职务留薪协议
- 博物馆展区铁艺栏杆施工合同
- GB/T 25217.11-2019冲击地压测定、监测与防治方法第11部分:煤层卸压爆破防治方法
- 酒店会员卡施行方案
- 福建2023年高考英语试题+答案word
- 酒店客人投诉处理技巧培训PPT教学讲座课件
- 新概念第二册英语lesson 44 随堂小测
- 卫生监督典型案例分析(食品安全)-文本资料课件
- CAD培训课件(基础教程)
- 人工智能1第一章绪论课件
- 肾囊肿去顶减压术病人的医疗护理
- 一汽-夏利48pin维修手册-ver
- 中国风书香校园宣传主题班会PPT
评论
0/150
提交评论