MST

星途 面试题库

面试题:Java序列化:对象持久化基础

请解释Java序列化的概念,并说明在对象持久化场景中,如何通过Java序列化将对象保存到文件中,然后再从文件中读取并反序列化恢复对象。请给出关键代码示例。
13.7万 热度难度
编程语言Java

知识考点

AI 面试

面试题答案

一键面试

Java序列化概念

Java序列化是将对象转换为字节序列的过程,以便可以将其存储到文件、数据库,或通过网络传输。反序列化则是相反的过程,将字节序列恢复为对象。通过实现java.io.Serializable接口,类表明其对象可以被序列化。

将对象保存到文件(序列化)

import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;

class MySerializableClass implements java.io.Serializable {
    private static final long serialVersionUID = 1L;
    String data;

    public MySerializableClass(String data) {
        this.data = data;
    }
}

public class SerializeExample {
    public static void main(String[] args) {
        MySerializableClass object = new MySerializableClass("Hello, Serialization!");
        try (FileOutputStream fileOut = new FileOutputStream("serializedObject.ser");
             ObjectOutputStream out = new ObjectOutputStream(fileOut)) {
            out.writeObject(object);
            System.out.println("Object has been serialized");
        } catch (IOException e) {
            e.printStackTrace();
        }
    }
}

从文件读取并反序列化恢复对象

import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;

public class DeserializeExample {
    public static void main(String[] args) {
        try (FileInputStream fileIn = new FileInputStream("serializedObject.ser");
             ObjectInputStream in = new ObjectInputStream(fileIn)) {
            MySerializableClass object = (MySerializableClass) in.readObject();
            System.out.println("Object has been deserialized: " + object.data);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}