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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© Walking Walking 中级黑马   /  2013-3-22 13:26  /  6198 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

通过实现 java.io.Serializable 接口以启用其序列化功能。未实现此接口的类将无法使其任何状态序列化或反序列化。
public interface Serializable {
}
这个接口中没有任何方法,那么是如何让他序列化的呢?什么又是反序列化呢?


点评

如果问题未解决,请继续追问回复者,如果问题已经解决,请将分类改为“已解决”,谢谢  发表于 2013-3-22 23:14

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

2 个回复

倒序浏览
本帖最后由 blackcaismine 于 2013-3-22 14:23 编辑

一个对象序列化的接口,一个类只有实现了Serializable接口,它的对象才是可序列化的。因此如果要序列化某些类的对象,这些类就必须实现Serializable接口。而实际上,Serializable是一个空接口,没有什么具体内容,它的目的只是简单的标识一个类的对象可以被序列化。
当对象被标示可序列化后,再用ObjectOutputStream的writeObject方法来对对象进行序列化即可,用readObject反序列化

评分

参与人数 1技术分 +1 收起 理由
贾文泽 + 1

查看全部评分

回复 使用道具 举报
Serializable是一个接口,凡是一个接口中没有任何定义,就被称为标记接口,像这种接口java中有很多,
标记接口就是用来做标记的,例如:房产证上面不是你的名字,法律上你就没有这个房子的所有权。
而类也是一样,你这个类没有实现Serializable接口,在java中你就无法对此类进行序列化。
现在就来回答一下,楼主提出的这个问题。
问:这个接口中没有任何方法,那么是如何让他序列化的呢?什么又是反序列化呢?
一个类实现了Serializable只能代表这个类的对象可以被序列化,但是如何序列化这个类的对象?
于是java就给我们提供一个可以对象进行序列化的类:ObjectOutputStream
序列化就是把一个对象持久性存储
               (序列化案例)
  1. ObjectOutputStream oos=new ObjectOutputStream(new BufferedOutputStream(new FileOutputStream("E:\\person.object")));//要把对象序列化(持久性存储)到硬盘的指定位置
  2.                 Person P=new Person("小王",229);//被序列化的对象
  3.                 oos.writeObject(P);//把此对象序列化
  4.                 oos.close();
复制代码
java同时也提供了对应的反序列化类:ObjectInputStream
通俗的理解反序列化就是把存在硬盘上的这个对象读取到内存中来
(反序列化案例)
  1. ObjectInputStream ois=new ObjectInputStream(new BufferedInputStream(new FileInputStream("E:\\person.object")));//从硬盘的指定位置读取存储对象的文件
  2.                 Person p=(Person)ois.readObject();//调用readObject进行反列化
  3.                 System.out.println(p);
  4.                 ois.close();
复制代码

评分

参与人数 1技术分 +1 收起 理由
洪建超 + 1

查看全部评分

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