上网时有时会经常看到有的博客里面有的java类会实现Serializable接口,工作当中我又很少用到,对它的概念有点模糊。今天从javaeye博客中对这个Serializable有所了解。带着下面几个问题,对这个Serializable接口来了解:
1>: Serializable(序列化)是什么?
2>:序列化有什么特点?
3>:什么时候使用序列化?
4>:序列化如何使用?
1:序列化是什么?
1> 首先我们要对序列化的含义进行了解。它是将一个对象的状态(各个属性值)保存起来,然后在适当的时候再获得.
2> 分为两部分:
A: 序列化 是这个过程的第一部分,将数据分解成字节流,以便存储在文件当中或在网络上传输.
B: 反序列化 是打开字节流并重构对象。
2:序列化有什么特点?
如果某个类能够被序列化,其子类也可以被序列化。声明为static和transient类型的成员数据不能被序列化。因为static代表类的状态,transient代表对象的临时数据。
3:什么时候使用序列化?
1>:对象序列化可以实现分布式对象
2>:利用对象序列化可以进行圣贤象的“深复制”,即复制对象本身及引用对象的本身.
4:序列化的实现:
将需要被序列化的类实现Serializable接口,该接口没有需要实现的方法,implements Serializable只是为了标注该对象是可被序列化的,然后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象,接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就可以将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。