>  기사  >  Java  >  Java에서 객체 직렬화 프로세스는 무엇입니까?

Java에서 객체 직렬화 프로세스는 무엇입니까?

WBOY
WBOY원래의
2024-04-12 11:30:02518검색

Java에서 객체 직렬화는 객체를 바이트 스트림으로 변환하고, 역직렬화는 바이트 스트림을 객체로 복원합니다. 직렬화를 수행하려면 직렬화 가능 인터페이스를 구현하고 객체를 준비하고 ObjectOutputStream을 사용하여 데이터를 써야 합니다. 직렬화 해제에서는 ObjectInputStream을 사용하여 데이터를 읽고 객체를 재구성합니다. 예를 들어 코드는 이름 및 연령 속성을 사용하여 Person 개체를 직렬화하고 파일에서 역직렬화하여 정보를 인쇄합니다.

Java에서 객체 직렬화 프로세스는 무엇입니까?

Java에서 객체의 직렬화 프로세스

소개

직렬화는 객체를 바이트 스트림으로 변환하여 파일이나 네트워크에 저장하는 프로세스입니다. 역직렬화는 저장된 바이트 스트림을 다시 원래 개체로 변환하는 역과정입니다. Java의 객체 직렬화를 위한 핵심 인터페이스는 직렬화 가능입니다. Serializable

序列化过程

1. 实现 Serializable 接口: 类必须实现 Serializable 接口才能进行序列化。

2. 准备对象: 要序列化的对象必须实现 writeObject 方法,该方法将对象的字段写入输出流。如果对象包含其他可序列化的对象,则 writeObject 方法也需要调用这些对象的 writeObject 方法。

3. 创建 ObjectOutputStream 使用 ObjectOutputStream 将对象写入输出流。

4. 编写对象: 调用 writeObject 方法将对象写入输出流。

反序列化过程

1. 创建 ObjectInputStream 使用 ObjectInputStream 从输入流读取对象。

2. 读取对象: 调用 readObject 方法从输入流读取对象。如果对象包含其他可序列化的对象,则 readObject 方法也会调用这些对象的 readObject

직렬화 프로세스

1. 직렬화 가능 인터페이스 구현:

클래스는 직렬화되도록 직렬화 가능 인터페이스를 구현해야 합니다.

2. 객체 준비:

직렬화할 객체는 객체의 필드를 출력 스트림에 쓰는 writeObject 메서드를 구현해야 합니다. 객체에 다른 직렬화 가능 객체가 포함되어 있는 경우 writeObject 메서드는 해당 객체의 writeObject 메서드도 호출해야 합니다. 🎜🎜🎜3. ObjectOutputStream 생성: 🎜 ObjectOutputStream을 사용하여 출력 스트림에 개체를 씁니다. 🎜🎜🎜4. 개체 쓰기: 🎜 writeObject 메서드를 호출하여 개체를 출력 스트림에 씁니다. 🎜🎜역직렬화 프로세스🎜🎜🎜1. ObjectInputStream 생성: 🎜 ObjectInputStream을 사용하여 입력 스트림에서 개체를 읽습니다. 🎜🎜🎜2. 객체 읽기: 🎜 readObject 메서드를 호출하여 입력 스트림에서 객체를 읽습니다. 객체에 다른 직렬화 가능 객체가 포함되어 있는 경우 readObject 메서드는 해당 객체의 readObject 메서드도 호출합니다. 🎜🎜🎜3. 객체 재구성: 🎜 입력 스트림에서 모든 데이터를 읽은 후 객체는 리플렉션 메커니즘을 사용하여 재구성됩니다. 🎜🎜실용 사례🎜🎜다음 코드 예제는 Java에서 객체를 직렬화 및 역직렬화하는 방법을 보여줍니다. 🎜
import java.io.*;

public class Person implements Serializable {
    private String name;
    private int age;

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

    @Override
    public void writeObject(ObjectOutputStream out) throws IOException {
        out.writeObject(name);
        out.writeInt(age);
    }

    @Override
    public void readObject(ObjectInputStream in) throws IOException, ClassNotFoundException {
        name = (String) in.readObject();
        age = in.readInt();
    }

    public static void main(String[] args) {
        try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("person.ser"))) {
            Person person = new Person("John", 30);
            out.writeObject(person);
        } catch (IOException e) {
            e.printStackTrace();
        }

        try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("person.ser"))) {
            Person person = (Person) in.readObject();
            System.out.println(person.name + ", " + person.age);
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

위 내용은 Java에서 객체 직렬화 프로세스는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.