当前位置 : 主页 > 编程语言 > java >

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

来源:互联网 收集:自由互联 发布时间:2021-05-13
本文实例讲述了java对象序列化操作。分享给大家供大家参考,具体如下: 在java中可以将对象进行序列化操作 要使对象能够被序列化,那么被序列化的对象要实现接口Serializable,此接口

本文实例讲述了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程序设计有所帮助。

网友评论