首页 > 学院 > 开发设计 > 正文

对象序列化

2019-11-06 08:39:59
字体:
来源:转载
供稿:网友
对象序列化的需求最早是为了能够在网络上传输对象,传统的各种类型的数据都是以二进制序列的形式在网上传送的。如果想在网络上发送java对象,就需要把这个Java对象转换为字节序列,才能在网络上传送,然后接收方在接到数据后再将字节序列恢复为Java对象即可。ObjectOutputStream和ObjectInputStream类java.io.ObjectOutputStream代表对象输出流,它的writeObject(Object obj)方法可对参数指定的obj对象进行序列化,把得到的字节序列写到一个目标输出流中。java.io.ObjectInputStream代表对象输入流,它的readObject( )方法从一个源输入流中读取字节序列,再把它们反序列化为一个对象,并将其返回。Serializable和Externalizable接口只有实现了Seriazable和Externalizable接口的类的对象才能被序列化。Externalizable接口继承自Serializable接口,实现Externalizable接口的类完全由自身来控制序列化的行为,而仅实现Serializable接口的类可以采用默认的序列化方式。序列化主要是用于两方面:RMI,远程传递对象JavaBean,Bean的状态信息通常是在设计时配置的。这些状态信息必须保存起来,供程序启动的时候用。Java中实现序列化,只要implements接口即可。
具体步骤如下:创建一个对象输出流,它可以包装一个其他类型的目标输出流,如文件输出流;通过对象输出流的writeObject( )方法写对象。//MakeObjectFile.javapackage com.company;import java.io.FileOutputStream;import java.io.ObjectOutputStream;/*** Created by jiajie on 2017/2/16.*/public class MakeObjectFile implements java.io.Serializable {    PRivate String str = new String();    public void setStr(String str) {        this.str = str;    }    public String getStr() {        return str;    }    public static void main(String args[]) {        try {            FileOutputStream objfile = new FileOutputStream("makeobj.obj");            ObjectOutputStream p = new ObjectOutputStream(objfile);            MakeObjectFile mof = new MakeObjectFile();            mof.setStr("abcd");            p.writeObject(mof);            p.flush();            objfile.close();        } catch (Exception e) {            e.printStackTrace();        }    }}运行之后,在目录中出现了一个新的文件makeobj.obj,这个文件中就存放着这个对象的序列字节。反序列化差不多,步骤如下:创建一个对象输入流,它可以包装一个其他类型的元输入流,如文件输入流;通过对象输入流的readObject( )方法读取对象。//OpenObjectFile.javapackage com.company;import java.io.FileInputStream;import java.io.ObjectInputStream;/*** Created by jiajie on 2017/2/16.*/public class OpenObjectFile {    public static void main(String args[]) {        try {            FileInputStream objfile = new FileInputStream("makeobj.obj");            ObjectInputStream q = new ObjectInputStream(objfile);            MakeObjectFile mof = (MakeObjectFile)q.readObject();            System.out.println(mof.getStr());        } catch (Exception e) {            e.printStackTrace();        }    }} 
上一篇:3月1日学习内容

下一篇:数据持久化

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表