


全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 购物助手的市场营销策略考核试卷
- 熟食超市开业活动方案
- 爆款拉新活动策划方案
- 爱国卫生日消毒活动方案
- 爱心书巢活动方案
- 爱心早餐志愿活动方案
- 爱心驿站开放日活动方案
- 爱民小学少先队活动方案
- 父亲节宣传文案活动方案
- 牙膏宣传活动方案
- 新教材北师大版必修第一册unit1 life choices单词短语句型写作知识点提炼
- 小学六年级数学奥数题100题附答案(完整版)
- 译林版六年级上册英语1-8单元-单元测试卷(含答案)sc
- 贵州省贵阳市2023-2024学年七年级下学期期末考试生物试题(无答案)
- 广东省湛江市2023-2024学年高二下学期7月期末考试化学试题
- 河南省周口市恒大中学2023-2024学年高二下学期7月期末考试数学试题
- 河南省郑州市2023-2024高一下学期期末考试数学试卷及答案
- 黑龙江省哈尔滨市2024年七年级下学期生物期末试卷附答案
- 山东省邹城市一中2024年高一数学第二学期期末检测试题含解析
- 2022-2023学年广西壮族自治区河池市高一下学期期末考试数学试题(解析版)
- REACH物质管理协议书
评论
0/150
提交评论