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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • currentstyle 织梦_dede currentstyle属性完美解决方案

    问题一、dede让channelartlist标签支持currentstyle属性完美解决打开include\taglib\channelartlist.lib.php找到$pv->Fields[‘typeurl’]=GetOneTypeUrlA($typeids[$i]);在此行代码下方增加以下代码:if($typeids[$i][‘id’]==$refObj->TypeL…

    2022年4月18日
    313
  • 1123581321递归算法_线性递归数列例题

    1123581321递归算法_线性递归数列例题[BZOJ3231][Sdoi2008]递归数列题目大意给定Ci,i∈[1,k]给定C_i,i\in[1,k]定义若i>k,Ai=Ai−1∗C1+Ai−2∗C2+⋯+Ai−k∗Ck若i>k,A_i=A_{i-1}*C_1+A_{i-2}*C_2+\cdots+A_{i-k}*C_k否则Ai=Bi否则A_i=B_i询问sum(A)n−sum(A)m−1询问sum(A)_n-sum(A

    2025年10月30日
    4
  • 北京2018积分落户名单[通俗易懂]

    北京2018积分落户名单[通俗易懂]北京2018积分落户名单已经公示出来了,地址在北京人力和社会保障局官网,共有6019人获得,恭喜他们,最低分为90.75分。Update:2019年的也出来了,详情请见https://blog.csdn.net/minstyrain/article/details/102642906.网站每页只能显示100页的内容,浏览起来很不方便,这里提供完整的excel表格形式的数据,详见百度网盘(…

    2022年10月6日
    4
  • python敏感词过滤replace_python用类实现文章敏感词的过滤方法示例

    python敏感词过滤replace_python用类实现文章敏感词的过滤方法示例过滤一遍并将敏感词替换之后剩余字符串中新组成了敏感词语,这种情况就要用递归来解决,直到过滤替换之后的结果和过滤之前一样时才算结束第一步:建立一个敏感词库(.txt文本)第二步:编写代码在文章中过滤敏感词(递归实现)#-*-coding:utf-8-*-#author代序春秋importosimportchardet#获取文件目录和绝对路径curr_dir=os.path.di…

    2022年6月2日
    102
  • linux下.tar.gz和.gz文件解压详解[通俗易懂]

    linux下.tar.gz和.gz文件解压详解[通俗易懂].tar.gz和.gz文件是两种不同的文件,需要区别对待,解压命令当然也不同咯,下面来分享一下他们各自的解压方法。1..tar.gz文件,这种文件是tar文件的压缩文件,可以使用tar命令进行解压。例如:解压:tarzxvfpythontab.tar.gztar-xjvfhttpd-2.4.4.tar.bz2解压文件到指定文件夹:tarxzvf…

    2022年4月27日
    48
  • cmd查看防火墙状态_win7防火墙关闭不了

    cmd查看防火墙状态_win7防火墙关闭不了centOS7查看防火墙状态

    2025年8月15日
    2

发表回复

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

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