首页

对象序列化及反序列化意义及实现方法有哪些?

标签:java,java基础,序列化和反序列化,Serializable,Externalizable,transient     发布时间:2015-06-14   

一、前言

序列化及反序列化意义    在java中对象序列化是处理对象流的一种机制,是将对象内容流化写入到字节流,而反序列化是向反的-从字节流中读取并还原为对象的过程。序列化后可以使用各种I/O流保存到文件或者通过网络将对象数据发送到另外一个主机,对象序列化在RMI、Socket、Jms及Ejb应用中,它是为解决对象在磁盘上读写操作和网络上传递除了问题才提出,序列化后可以通过writeObject()方便向特定文件或者网络输出对象,另外通过readObject()方法方便地接受该对象。

二、序列化应用场景

1.永久性保存对象,对象所有字节序列都到本地文件

2.实现分布式对象,通过RMI利用对象序列化进行远程主机的服务,与本地机上运行对象相同

3.通过序列化对象在网络中传递网络中

4.通过序列化在进程间传递对象

三、序列化方法

一种是选择实现Seriallizble接口,另一种是实现Exrializble

a.实现Seriallizble接口,该接口不需要实现其他任何方法

pubic class stu  implements Serializable{@b@    @b@    private String name;@b@    private int age;@b@     @b@ ...@b@}

b.实现Externalizable,需要是实现writeExternal()和readExternal()方法,具体如下:

public  class stu implements  Externalizable{@b@    @b@    private String name;@b@    private int age;@b@     @b@    ...@b@    public void readExternal(ObjectInput in) throws IOException,ClassNotFoudException{@b@        name=(String)in.readObject();@b@        age=in.readInt();@b@         @b@     }@b@@b@    public void writeExternal(ObjectOutput out)throws IOException,ClassNotFoudException{@b@        out.writeObject(name);@b@        out.writeInt(age);@b@     }@b@    ...@b@}

四、总结

对于上面两种序列化方法,一般习惯使用第一种,因为接口实现简单。对于类中不需要序列化的属性需要使用static和transient关键词修饰。

<<热门下载>>