java序列化与反序列化

本人在接触过程中有两个帖子写的不错,在此整理一下:
1.序列化:将对象转化成流的过程称为序列化 

   反序列化:将流转化成对象的过程称之为反序列化

2.对象序列化(Serializable)是指将对象转换为字节序列的过程,而反序列化则是根据字节序列恢复对象的过程。

上面这两个解释都通俗易懂。

序列化经常用在一下过程中:
1.永久性保存对象,保存对象的字节序列到本地文件中;
2.通过序列化对象在网络中传递对象;
3.通过序列化在进程间传递对象.

Java.io.ObjectOutputStream代表对象输出流,其方法writeObject(Object obj)可以实现对象的序列化,

将得到的字节序列写到目标输出流中。Java.io.ObjectInputStream代表对象输入流,其readObject()方法能从源输入流中读取字节序列,

将其反序列化为对象,并将其返回。参见这里,有一个例子,将一个对象通过流的形式输出,然后再读入流,还原为另外一个对象,从而实现深拷贝。

      我们现在再来介绍一个接口 java.io.Externalizable 。当对象实现了这个接口时,就可以灵活的控制它的序列化和反序列过程,这个接口继承了java.io.Serializable Externalizable 接口定义了两个方法,writerExternal方法在序列化时被调用,可以再该方法中控制序列化内容,readExternal方法在反序列时被调用,可以在该方法中控制反序列的内容。

 

你可能感兴趣的:(java序列化与反序列化)