文档章节

Java序列化和反序列化

IT-Mamba
 IT-Mamba
发布于 2018/06/24 15:37
字数 389
阅读 31
收藏 0

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());
    }
}

 

 

 

© 著作权归作者所有

IT-Mamba
粉丝 10
博文 132
码字总数 55322
作品 0
惠州
程序员
私信 提问
Java序列化与JSON序列化大比拼

一、背景 有项目需要传输Map结构的数据,有人倾向用Java序列化来做,有人倾向用JSON的序列化来做。所以我们还是比比吧。 Java观点:Object2Object,使用时简单快速。 JSON观点:JSON格式与语...

NoahX
2013/03/10
19.8K
20
Android Serializable与Parcelable原理与区别

一、序列化、反序列化是什么? (1) 名词解释 对象的序列化 : 把Java对象转换为字节序列并存储至一个储存媒介的过程。 对象的反序列化:把字节序列恢复为Java对象的过程。 (2) 序列化详细解释 ...

KingMing
2015/04/16
241
0
Java序列化之Serializable

1.需求 1.什么是Java序列化 2.详解 1.序列化 理解为"打碎"即可 2.在书本上序列化的意思是将Java对象转为二进制 3.java平台允许我们在内存中创建对象,当JVM运行时对象才能存在,如果JVM停止,对...

村长大神
2018/05/08
52
0
序列化框架比较:kryo & hessian & Protostuff & java

序列化框架性能对比(kryo、hessian、java、protostuff) 简介: 优点 缺点 Kryo 速度快,序列化后体积小 跨语言支持较复杂 Hessian 默认支持跨语言 较慢 Protostuff 速度快,基于protobuf ...

鉴客
2013/03/04
11.2K
0
什么是 java 序列化?什么情况下需要序列化?

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 https://blog.csdn.net/meism5/article/details/90413987 序列化:将 Java 对象转换成字节流...

ConstXiong
06/17
0
0

没有更多内容

加载失败,请刷新页面

加载更多

浅谈FlyWeight享元模式

一、前言 享元(FlyWeight)模式顾名思义,即是轻量级,原因就是享元,共享元素,这里的元素指的是对象。如何共享对象,那就是在检测对象产生的时候,如果产生的是同一个对象,那么直接使用已...

青衣霓裳
20分钟前
4
0
Python学习10.14:Python set集合详解

Python 中的集合,和数学中的集合概念一样,用来保存不重复的元素,即集合中的元素都是唯一的,互不相同。 从形式上看,和字典类似,Python 集合会将所有元素放在一对大括号 {} 中,相邻元素...

太空堡垒185
20分钟前
6
0
好程序员大数据教程分享Scala系列之文件以及正则表达式

好程序员大数据教程分享Scala系列之文件以及正则表达式 1 读取行 导入scala.io.Source后,即可引用Source中的方法读取文件信息。 import scala.io.Source object FileDemo extends App{ val ...

好程序员官网
20分钟前
4
0
75.nosql memcached与安装及查看状态

21.1 nosql介绍 21.2 memrcached介绍 21.3 安装memcached 21.4 查看memcachedq状态 21.1 nosql介绍 什么是NoSQL: 1.非关系型数据库就是NoSQL,关系型数据库代表MySQL 也是一种数据库,来存储...

oschina130111
22分钟前
3
0
玩转阿里云 Terraform(二):Terraform 的几个关键概念

上一篇《玩转阿里云Terraform(一):Terraform 是什么》介绍了 Terraform 的基本定义和特点之后,本文将着重介绍几个Terraform中的关键概念。 Terraform 关键概念 在使用Terraform的过程中,通...

阿里云官方博客
22分钟前
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部