日期:2014-05-20  浏览次数:20658 次

关于Serializable,为什么实现Serializable就能够实现序列化
本帖最后由 kolnick 于 2013-09-16 10:07:49 编辑
为什么实现Serializable接口就能实现序列号, 我查看Serializable接口的源码 里面并没有定义任何方法 
求指导

------解决方案--------------------
它是个标识接口。
------解决方案--------------------
序列化是历史遗留问题,也可以说是Java中设计瑕疵之一。

“为什么实现Serializable就能够实现序列化”

简单回答就是 ObjectInputStream 和 ObjectOutputStream 中的关键方法都会对要序列化的 Object 做检查,其类型必须是 Serializable。

正确的序列化设计要做的工作绝对不仅仅是加个 implements Serializable 这么简单。
------解决方案--------------------
序列化的实现:将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个 ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。