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

 更新时间:2019年11月20日 09:33:02   作者:倾听岁月  
这篇文章主要介绍了java对象序列化操作,结合实例形式分析了java对象序列化操作相关实现步骤与操作注意事项,需要的朋友可以参考下

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

相关文章

  • 解决idea web工程修改js文件之后不变化的问题

    解决idea web工程修改js文件之后不变化的问题

    这篇文章主要介绍了解决idea web工程修改js文件之后不变化的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-12-12
  • Springboot实现Activemq死信队列详解

    Springboot实现Activemq死信队列详解

    这篇文章主要介绍了Springboot实现Activemq死信队列详解,Activemq服务端配置重新投递次数超过 MaximumRedeliveries ,则会进入死信队列,默认情况,有一个死信队列:AcitveMQ.DLQ,所有的消息都投递到此队列,包括过期消息,重投递失败消息,需要的朋友可以参考下
    2023-12-12
  • Java生成PDF文档两个超实用的库( iText和Apache PDFBox)

    Java生成PDF文档两个超实用的库( iText和Apache PDFBox)

    这篇文章主要介绍了Java生成PDF文档两个超实用的库,分别是用 iText库以及用Apache PDFBox库生成PDF,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-02-02
  • SpringBoot接收参数所有方式总结

    SpringBoot接收参数所有方式总结

    这篇文章主要介绍了SpringBoot接收参数所有方式总结,文中通过代码示例和图文结合的方式给大家介绍的非常详细,对大家的学习或工作有一定的帮助,需要的朋友可以参考下
    2024-07-07
  • SpringBoot实现线程池

    SpringBoot实现线程池

    现在由于系统越来越复杂,导致很多接口速度变慢,这时候就会想到可以利用线程池来处理一些耗时并不影响系统的操作。本文就介绍了SpringBoot线程池的使用,感兴趣的可以了解一下
    2021-06-06
  • Java框架MyBatis接口编程过程解析

    Java框架MyBatis接口编程过程解析

    这篇文章主要介绍了Java框架MyBatis接口编程过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-02-02
  • Java实现树形结构的示例代码

    Java实现树形结构的示例代码

    由于业务需要,后端需要返回一个树型结构给前端,包含父子节点的数据已经在数据库中存储好。本文将为大家分享Java现树形结构的示例代码,需要的可以参考下
    2022-05-05
  • MyBatis中#号与美元符号的区别

    MyBatis中#号与美元符号的区别

    #{变量名}可以进行预编译、类型匹配等操作,#{变量名}会转化为jdbc的类型。很多朋友不清楚在mybatis中#号与美元符号的不同,接下来通过本文给大家介绍两者的区别,感兴趣的朋友参考下吧
    2017-01-01
  • zuul集成Sentinel,完成对path映射的限流操作

    zuul集成Sentinel,完成对path映射的限流操作

    这篇文章主要介绍了zuul集成Sentinel,完成对path映射的限流操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-06-06
  • 基于@JsonSerialize和@JsonInclude注解使用方法

    基于@JsonSerialize和@JsonInclude注解使用方法

    这篇文章主要介绍了@JsonSerialize和@JsonInclude注解使用方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-10-10

最新评论