A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

© 郑昌奋 中级黑马   /  2013-3-22 21:57  /  1383 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郑昌奋 于 2013-3-23 10:26 编辑

Serializable接口
实现这个借口有什么好处的?

3 个回复

正序浏览
吴上波 发表于 2013-3-22 22:52
1、序列化: 简单说就是为了保存在内存中的各种对象的状态 ,并且可以把保存的对象状态再读出来
     虽然你 ...

明白了。谢谢你
回复 使用道具 举报
本帖最后由 吴上波 于 2013-3-22 22:53 编辑

1、序列化: 简单说就是为了保存在内存中的各种对象的状态 ,并且可以把保存的对象状态再读出来
     虽然你可以用你自己的各种各样的方法来保存对象状态,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化

2、序列化使用的场景:
    A.当你想把的内存中的对象状态保存到文件中或数据库中时;
    B.当你想用套接字在网络上传送对象的时候;
    C.当你想通过RMI传输对象的时候;

序列化对象如下:  
Student zhangsan = new Student();
zhangsan.setAge(18);
zhangsan.setSex(male);
zhangsan.setHeight(178);

实例化过程代码:
FileOutputStream fos= new FileOutputStream("student.ser");
ObjectOutputStream oos = new ObjectOutputStream(fos);
os.writeObject(student);

       当通过上面的代码序列化之后,Studeng对象zhangsan的实例变量值(18,male,178)都被保存到student.ser文件中,这样以后又可以把它从文件中读出来,重新在堆中创建原来的对象。当然保存时候不仅仅是保存对象的实例变量的值,JVM还要保存一些小量信息,比如类的类型等以便恢复原来的对 象。

3、实现序列化保存到文件的一般步骤
     //1.创建个Fileoutputsteam         
    FileOutputStream fos  new FileOutputStream("student.ser");   

     //2.创建个objiectoutputstream      
     ObjectOutputStream oos    new ObjectOutputStream(fos );  

     //3.写入特定类的对象, 用方法writeobjiect()
     os.writeObject(Object1);
     os.writeObject(Object2);
     os.writeObject(Object3);

     //4.关闭流
     os.close();



评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
这个是为了对象可序列化,一个类只有实现了Serializable接口,它的对象才是可序列化的。

为什么要序列化,简单的说就是为了方便存储数据。

具体一点就是
1、当你想把的内存中的对象写入到硬盘的时候;
2、当你想用套接字在网络上传送对象的时候;
3、当你想通过RMI传输对象的时候;

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马