美文网首页Java学习
Java 对象序列化和反序列化

Java 对象序列化和反序列化

作者: xiaogp | 来源:发表于2020-07-17 15:28 被阅读0次

序列化(Serialization)是将对象的状态信息转化为可以存储或者传输的形式(字节序列)的过程,反序列化则为其逆过程.

序列化使用ObjectOutputStream下的writeObject方法
反序列化使用ObjectInputStream下的readObject方法
对于类对象只有实现了Serializable接口,它的对象才是可序列化的, 所以要用implements Serializable, 作为一个类可以被序列化的标识, Serializable本身是一个空接口

import java.io.*;
import java.util.HashMap;
import java.util.Map;

public class ObjectSerialization {
    public static void main(String[] args) {
        // 对Map进行序列化和反序列化
        Map<String, Integer> map1 = new HashMap<>();
        map1.put("a", 1);
        map1.put("b", 2);
        map1.put("c", 3);
        Serialization(map1, "/data/test.dat");
        Map<String, Integer> map2 = (Map) Deserialization("/data/test.dat");
        System.out.println(map2);
        System.out.println(map2.get("a"));

        // 对类对象进行序列化和反序列化
        Student2 student = new Student2("gp", 14);
        student.getName();
        Serialization(student, "/data/testClass.dat");
        Student2 student2 = (Student2) Deserialization("/data/testClass.dat");
        student2.getName();

    }

    /**
     * 序列化
     *
     * @param object
     * @param path
     */
    public static void Serialization(Object object, String path) {
        try {
            ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(path));
            objectOutputStream.writeObject(object);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    /**
     * 反序列化
     *
     * @param path
     * @return
     */
    public static Object Deserialization(String path) {
        Object result = null;
        try {
            ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(path));
            result = objectInputStream.readObject();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return result;
    }

}

class Student2 implements Serializable {
    private final String name;
    private final int age;

    public Student2(String name, int age) {
        this.name = name;
        this.age = age;
    }

    public void getName() {
        System.out.println(this.name);
    }
}

相关文章

  • java专题之序列化

    一、基本概念 1、什么是序列化和反序列化 (1)Java序列化是指把Java对象转换为字节序列的过程,而Java反...

  • Java-序列化-反序列化

    Thanks Java基础学习总结——Java对象的序列化和反序列化java序列化反序列化原理Java 序列化的高...

  • Java序列化

    Java序列化的几种方式以及序列化的作用 Java基础学习总结——Java对象的序列化和反序列化

  • 什么是序列化?常见的序列化协议有哪些?

    序列化和反序列化相关概念 什么是序列化?什么是反序列化? 如果我们需要持久化 Java 对象比如将 Java 对象...

  • JAVA反序列化漏洞

    目录 反序列化漏洞序列化和反序列化JAVA WEB中的序列化和反序列化对象序列化和反序列范例JAVA中执行系统命令...

  • JDK 序列化

    序列化和分序列化概念 什么是序列化和反序列化 Java序列化是指把Java对象转换为字节序列的过程,而Java反序...

  • Java序列化机制

    Java序列化机制 序列化和反序列化 Java序列化是Java内建的数据(对象)持久化机制,通过序列化可以将运行时...

  • 序列化与反序列化

    Java基础学习总结——Java对象的序列化和反序列化 一、序列化和反序列化的概念 把对象转换为字节序列的过程称为...

  • Spark序列化

    Java序列化 有关Java对象的序列化和反序列化也算是Java基础的一部分,首先对Java序列化的机制和原理进行...

  • Java序列化和反序列化

    1. 什么是序列化和反序列化 序列化:把Java对象转化为字节序列的过程。 反序列化:把字节序列恢复为Java对象...

网友评论

    本文标题:Java 对象序列化和反序列化

    本文链接:https://www.haomeiwen.com/subject/bbughktx.html