首页 > 编程 > Java > 正文

java对象序列化操作实例分析

2019-11-26 06:25:03
字体:
来源:转载
供稿:网友

本文实例讲述了java对象序列化操作。分享给大家供大家参考,具体如下:

在java中可以将对象进行序列化操作

要使对象能够被序列化,那么被序列化的对象要实现接口Serializable,此接口位于java.io包中

pakacge demo;import java.io.Serializable;/** * 实现了Serializable 接口的demo类 */public class Demo1 implements Serializable{    private String name;    private String sex;    private int age;    public Demo1()    {    }    public Demo1(String name,String sex,int age)    {        this.setName(name);        this.setSex(sex);        this.setAge(age);    }    public void setName(String name)    {        this.name = name;    }    public String getName()    {        return this.name;    }    public void setSex(String sex)    {        this.sex = sex;    }    public String getSex()    {        return this.sex;    }    public void setAge(int age)    {        this.age = age;    }    public int getAge()    {        return this.age;    }}

序列化对象案例程序,网上的教程是将序列化的对象输出到文件,但一般我们是将序列化的对象存储在字符串中,并转存到数据库中。所以这里我用ByteArrayOutputStream 对象替代文件输出对象

import demo.Demo1;import java.io.*;public class Index{    public static void main(String[] agrs)    {        test1();    }    public static void test1()    {        Demo1 demo1 = new Demo1("谭勇","男",23);        try{            //实例化一个ByteArray 对象            ByteArrayOutputStream byteOut = new ByteArrayOutputStream();            //实例化对象序列化输入流,并设置序列化后的对象输出到byteOut对象            ObjectOutputStream objOutputStream = new ObjectOutputStream(byteOut);            //将对象写入到byteOut 对象中            objOutputStream.writeObject(demo1);            //序列化后的对象转String 存储            String strObj = byteOut.toString("ISO-8859-1");            //关闭流            objOutputStream.close();            byteOut.close();            /***************将序列化字符串转对象******************/            //实例一个序列化对象输入流            ByteArrayInputStream byteInputStream = new ByteArrayInputStream(strObj.getBytes("ISO-8859-1"));            //序列化对象输入流            ObjectInputStream objInput = new ObjectInputStream(byteInputStream);            //将序列化对象转对象            Demo1 demo1_ser = (Demo1)objInput.readObject();            //关闭流            objInput.close();            byteInputStream.close();            System.out.println(demo1_ser.getName());            System.out.println(strObj);        }catch(IOException e){            System.out.println(e.getMessage());        }catch(ClassNotFoundException e){            System.out.println(e.getMessage());        }    }}

运行结果:

更多java相关内容感兴趣的读者可查看本站专题:《Java面向对象程序设计入门与进阶教程》、《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

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