序列化是一种用来处理对象流
的机制。java
所谓对象流:就是将对象的内容进行流化。能够对流化后的对象进行读写操做
,也可将流化后的对象传输于网络
之间。数据库
序列化是为了解决在对对象流进行读写操做时所引起的问题。编程
序列化的实现:将须要被序列化的类实现Serializable接口(标记接口)
,该接口没有须要实现的方法,implements Serializable只是为了标注
该对象是可被序列化的,而后使用一个输出流(如:FileOutputStream)来构造一个ObjectOutputStream(对象流)对象;接着,使用ObjectOutputStream对象的writeObject(Object obj)方法就能够将参数为obj的对象写出(即保存其状态),要恢复的话则用输入流。网络
何时使用序列化呢?app
实现分布式对象
。RMI(即远程调用Remote Method Invocation)
要利用对象序列化运行远程主机上的服务,就像在本地机上运行对象时同样。复制对象自己及引用的对象自己
。序列化一个对象可能获得整个对象序列。反序列化
就能够将原先的类还原到内存中。也能够将类序列化为流数据进行传输。总的来讲就是将一个已经实例化的类转成文件存储
,下次须要实例化的时候只要反序列化便可将类实例化到内存中并保留序列化时类中的全部变量和状态。变成同样的东西
,就能够进行通用的格式传输或保存,传输结束之后,要再次使用,就进行反序列化还原,这样对象仍是对象,文件仍是文件由于JAVA中要将对象序列化为 流的形式
进行传输。分布式
因此涉及到数据传输或者存储的类,严格意义上来讲都要加上序列化ID,这也是一种良好的编程习惯
。