序列化和反序列化

1.序列化:将内存中对象的状态或者信息转换成持久化的过程。

2.反序列化:把持久化对象变成内存中的一个对象的过程。

3.序列化目的:

  01.使自定义的对象持久化,对象本身就是内存中的

  02.把对象从一个地方传递到另一个地方

  03.使程序具有维护性

4.实现对象序列化的方法

  01.让对象所属的类实现Serializable接口,这个类就可以序列化了

  02.Serializable:只是一个能否被序列化的标记。

5.反序列化要求注意:

  需要和序列化时候的包名一致不然就没法序列化

public class Student implements Serializable {

    private Integer id;// 编号
    private String name;// 姓名

    public Integer getId() {
        return id;
    }

    public void setId(Integer id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Student(Integer id, String name) {
        super();
        this.id = id;
        this.name = name;
    }

    public Student() {
        super();
    }

    @Override
    public String toString() {
        return "Student [id=" + id + ", name=" + name + "]";
    }

}
Serializable
@Test
    public void test01() throws Exception {
        // 首先实例化一个对象
        Student stu = new Student(1, "哈哈");
        // 序列化,从内存中放入持久化的介质中,输出流
        FileOutputStream stream = new FileOutputStream("f:/student.txt");
        ObjectOutputStream putStream = new ObjectOutputStream(stream);
        // 开始持久化
        putStream.writeObject(stu);
        putStream.close();
        stream.close();
    }
ObjectOutputStream
@Test
    public void test02() throws Exception {
        // 从文件中把对象拿到内存中输入流
        FileInputStream fStream = new FileInputStream("f:/student.txt");
        ObjectInputStream stream = new ObjectInputStream(fStream);
        // 读取文件中的对象
        Student student = (Student) stream.readObject();
        System.out.println(student);
        stream.close();
        fStream.close();
    }
ObjectInputStream
原文地址:https://www.cnblogs.com/milu0620/p/7002913.html