学习记录290@Java序列化与反序列化

什么是序列化与反序列化

序列化:对创建的对象转化为字节流数据,进行保存或者传输的过程。
反序列化:从保存序列化数据的地方,读取对象并进行使用的过程。
例如,写了一个类Person,将这个类实例化后,把他保存到一个文件中,然后还可以从这个文件中读取出这个实例化对象,并且使用它的方法,获得成员变量值等等。

例子

package mypackage;

import java.io.*;
//序列化对象必须实现Serializable接口
class Person implements Serializable {
    
    
    private String  name;
    private int  age;

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

    public String getName() {
    
    
        return name;
    }


    public int getAge() {
    
    
        return age;
    }

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

    public void setAge(int age) {
    
    
        this.age = age;
    }

    public void print() {
    
    
        System.out.println("随便输出点什么");
    }

    @Override
    public String toString() {
    
    
        return "Person{" +
                "name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

//测试
public class MyJava {
    
    
//序列化方法
    public static void out(Object object,String name) throws IOException {
    
    
        ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(name));
        oos.writeObject(object);
    }
//反序列化方法
    public static Object in(String name) throws IOException, ClassNotFoundException {
    
    
        ObjectInputStream oin= new ObjectInputStream(new FileInputStream(name));
        Object object =oin.readObject();
        return object;
    }
//测试
    public static void main(String[] args) throws IOException, ClassNotFoundException {
    
    
//实例化对象
        Person person = new Person("哈哈哈", 18);
//        序列化
        MyJava.out(person,"C:\\Users\\17621802479\\Desktop\\object.txt");
//反序列化
        Person in = (Person) MyJava.in("C:\\Users\\17621802479\\Desktop\\object.txt");
//        操作对象
        System.out.println(in);
        System.out.println(in.getName());
        System.out.println(in.getAge());
        in.print();
    }
}

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_44663675/article/details/107250368