Java序列化和反序列化

Java序列化和反序列化

1、什么是序列化和反序列化

序列化:把对象转换为字节序列的过程。

反序列化:把字节序列恢复成对象的过程。

2、被序列化的类需要实现serializable接口,只是为了标注该对象是可以被序列化的,并没有需要实现的方法。

3、示例:

新建Student类

import java.io.Serializable;
public class Student implements Serializable{

    private String name;
    private int age;

    private static final long serialVersionUID = 1L;

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    public int getAge() {
        return age;
    }
    public void setAge(int age) {
        this.age = age;
    }
}

新建转换工具类SerializeUtils:

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;

public class SerializeUtils {
    public byte[] Serialize(Object object) {
        ByteArrayOutputStream byteArrayOutPutStream = new ByteArrayOutputStream();
        try {
            ObjectOutputStream objectOutPutStream = new ObjectOutputStream(byteArrayOutPutStream);
            //将对象写入到字节数组中进行序列化
            objectOutPutStream.writeObject(object);
            return byteArrayOutPutStream.toByteArray();
        }catch (IOException e) {
            e.printStackTrace();
        }
        return null;
    }

    public Object deSerialize (byte[] bytes) {
        //将二进制数组导入字节数据流中
        ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(bytes);
        try {
            //将字节数组留转化为对象
            ObjectInputStream objectInputStream = new ObjectInputStream(byteArrayInputStream);
            return objectInputStream.readObject();
        }catch (IOException e) {
            e.printStackTrace();
        }catch (ClassNotFoundException e) {
            e.printStackTrace();
        }
        return null;
    }
}

新建测试类test_serializable:

public class test_serializable {
    public static void main(String[] args) {
        SerializeUtils serializeUtils = new SerializeUtils();
        Student student = new Student();
        student.setName("kobe");
        student.setAge(20);
        byte[] serializObject = serializeUtils .Serialize(student);
        System.out.println(serializObject);

        Student e = (Student)serializeUtils.deSerialize(serializObject);
        System.out.println("Name: " + e.getName()+",Age: " + e.getAge());
    }
}

 

 

 

转载于:https://my.oschina.net/xiaozhiwen/blog/1834751

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/101594.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • java flatmap_java8 flatmap「建议收藏」

    java flatmap_java8 flatmap「建议收藏」比如一个List>,map能够直接操作list中的每个对象Listintegers=newArrayList<>();//添加数据略integers.stream.map(i->i+1).foreach(System.out::println);而使用flatmap使我们能够操作更深一层的数据,如下:List>List>outer=new…

    2022年6月3日
    36
  • idea配置svn仓库

    idea配置svn仓库IntelliJIDEA使用教程(总目录篇)首先,使用的时候,自己得先在电脑上安装个小乌龟。也就是svn啦。第一步安装小乌龟。如下:具体安装好像没什么具体要求,一路next,就好。如上图箭头所示,在安装TortoiseSVN的时候,默认commandlineclienttools,是不安装的,这里建议勾选上。这个我不确定我当时选没选,不过呢,你给安装上,也是没问题的。把上面的勾选取…

    2022年5月14日
    106
  • 多重共线性检验之方差膨胀因子VIF[通俗易懂]

    多重共线性检验之方差膨胀因子VIF[通俗易懂]过程1、构造每一个自变量与其余自变量的线性回归模型,例如,数据集中含有p个自变量,则第一个自变量与其余自变量的线性组合可以表示为2、根据如上线性回归模型得到相应的判决系数R2R^2R2,进而计算第一个自变量的方差膨胀因子VIF:importpandasaspdimportnumpyasnpfromsklearnimportmodel_selectionimportstatsmodels.apiassnfromstatsmodels.stats.outlier

    2022年6月6日
    247
  • 可视化报表开发_可视化数据报表

    可视化报表开发_可视化数据报表当今时代,传统的报表工具已经很难满足人们对于数据可视化的期望了,而大数据处理工具却可以为人们提供了更多的选择。微金时代的RDP报表工具操作简便,可直接上手使用,无需编码,就可以制作各种复杂、炫酷的报表。RDP报表工具表格式报表功能和亮点根据中国特色的报表需求,研发出的轻量级的企业级Web报表工具。仅需简单拖拽式配置,即可制作出各种复杂、炫酷的报表。支持中国式复杂报表的处理,例如:Excel清单报表、交叉报表、分组报表、多源分片式报表、分块报表、表单报表、图形报表、回写报表、假设分析报表、二次.

    2022年10月2日
    4
  • 关于SOAP调用返回对象的写法 wsdl webservice

    关于SOAP调用返回对象的写法 wsdl webservice

    2021年5月4日
    145
  • 虚拟机连不上网问题详解「建议收藏」

    虚拟机连不上网问题详解「建议收藏」虚拟机连不上网问题详解第一虚拟机导航栏–编辑–虚拟机网络编辑器–VMnet0桥接模式(Inter(R)Wireless—AC9462)第二虚拟机导航栏–虚拟机–设置–网络适配器–NAT模式(VMnet0)–确定第三自己windows系统–服务–确保VMware开头的五个服务全部开启,并设置成自动开启最后打开虚拟机终端输入命令(重启网络服务)servicenetworkrestart我的是出现下面状态 [root@localhost~]#servicenetw

    2022年6月26日
    22

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号