全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 勘察设计院考核制度
- 局 平安建设考核制度
- 农业综合开发考核制度
- 银行保安管理考核制度
- 美容院员工考核制度
- 结核病管理考核制度
- 2026年高考文综第二次模拟考试题及答案
- 全国环境影响评价工程师技术与方法模拟试题及答案
- 江苏省大丰市新丰中学2026届高一生物第二学期期末统考模拟试题含解析
- 古代汉语期末考试试题和答案
- 消火栓安全培训知识课件
- DRG支付改革对医院运营的影响及应对
- 熔盐储热材料研发-洞察与解读
- 人教版7到9年级单词表打印版
- 2025年高压电工复审完整题库(附答案)
- 基因组学与基因表达数据分析-洞察阐释
- 2025年湖北高考真题化学试题(原卷版)
- 呼吸衰竭的早期识别和紧急处理方法
- 中华姓氏大辞典
- 密闭式静脉输血技术操作规范
- 肢体功能障碍的心理康复课件
评论
0/150
提交评论