java序列话

Java序列化是将对象转换为字节流的过程,以便将其持久化到磁盘或通过网络传输。反序列化则是将字节流转换回对象。

Java序列化是一种将对象转换为字节流的过程,以便将其持久化到磁盘或通过网络传输,反序列化则是将字节流转换回对象的过程,在Java中,可以通过实现java.io.Serializable接口来实现对象的序列化和反序列化。

序列化

1、实现Serializable接口

java序列话

要使一个类的对象可以被序列化,需要实现java.io.Serializable接口。

import java.io.Serializable;
public class Person implements Serializable {
    private static final long serialVersionUID = 1L;
    private String name;
    private int age;
    // 构造方法、getter和setter方法省略
}

2、使用ObjectOutputStream进行序列化

要将对象序列化为字节流,可以使用java.io.ObjectOutputStream类。

java序列话

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class SerializeDemo {
    public static void main(String[] args) {
        Person person = new Person("张三", 30);
        try {
            FileOutputStream fileOut = new FileOutputStream("person.ser");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(person);
            out.close();
            fileOut.close();
            System.out.println("序列化成功,已保存到person.ser文件");
        } catch (IOException i) {
            i.printStackTrace();
        }
    }
}

反序列化

1、使用ObjectInputStream进行反序列化

要将字节流反序列化为对象,可以使用java.io.ObjectInputStream类。

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.Serializable;
public class DeserializeDemo {
    public static void main(String[] args) {
        Person person = null;
        try {
            FileInputStream fileIn = new FileInputStream("person.ser");
            ObjectInputStream in = new ObjectInputStream(fileIn);
            person = (Person) in.readObject();
            in.close();
            fileIn.close();
        } catch (IOException i) {
            i.printStackTrace();
            return;
        } catch (ClassNotFoundException c) {
            System.out.println("Person类未找到");
            c.printStackTrace();
            return;
        }
        System.out.println("反序列化成功,从person.ser文件中读取到的对象为:");
        System.out.println("姓名:" + person.getName());
        System.out.println("年龄:" + person.getAge());
    }
}

注意:在进行反序列化操作时,需要确保字节流中的类与当前运行的类具有相同的类名、包名和实现的接口,如果这些信息不匹配,将抛出ClassNotFoundException异常。

java序列话

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/642901.html

(0)
未希的头像未希新媒体运营
上一篇 2024-05-21 16:42
下一篇 2024-05-21 16:44

发表回复

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

云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购  >>点击进入