对象序列化是将一个对象转换成字节序列的过程,以便于在网络上传输或者保存到本地文件中。而反序列化则是将字节序列转换回对象的过程。Java中提供了一些类和方法来实现对象序列化和反序列化。

下面是一个简单的示例代码:

import java.io.*;

public class SerializeDemo {
    public static void main(String[] args) {
        // 创建一个Person对象
        Person person = new Person("Tom", 18);
        // 将对象序列化到文件中
        serializeObject(person, "person.ser");
        // 从文件中反序列化对象
        Person newPerson = (Person) deserializeObject("person.ser");
        System.out.println("Name: " + newPerson.getName());
        System.out.println("Age: " + newPerson.getAge());
    }

    // 将对象序列化到文件中
    public static void serializeObject(Object obj, String filename) {
        try {
            FileOutputStream fos = new FileOutputStream(filename);
            ObjectOutputStream oos = new ObjectOutputStream(fos);
            oos.writeObject(obj);
            oos.close();
            fos.close();
            System.out.println("Serialized Object saved in " + filename);
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 从文件中反序列化对象
    public static Object deserializeObject(String filename) {
        Object obj = null;
        try {
            FileInputStream fis = new FileInputStream(filename);
            ObjectInputStream ois = new ObjectInputStream(fis);
            obj = ois.readObject();
            ois.close();
            fis.close();
            System.out.println("Deserialized Object loaded from " + filename);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
        return obj;
    }
}

// 实现Serializable接口的Person类
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;
    }
}

运行结果:

Serialized Object saved in person.ser
Deserialized Object loaded from person.ser
Name: Tom
Age: 18

在上面的示例代码中,我们定义了一个Person类,并实现了Serializable接口。然后我们创建了一个Person对象并将其序列化到文件中。接着我们从文件中反序列化对象,并打印出其属性值。在序列化和反序列化过程中,我们分别使用了ObjectOutputStream和ObjectInputStream来执行序列化和反序列化操作。注意,在序列化和反序列化过程中,我们需要使用try-catch语句来处理可能的异常。

java 对象序列化和反序列化代码

原文地址: http://www.cveoy.top/t/topic/sep 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录