>  기사  >  Java  >  Java 직렬화 및 역직렬화 프로세스는 무엇입니까?

Java 직렬화 및 역직렬화 프로세스는 무엇입니까?

王林
王林원래의
2024-04-15 18:06:011139검색

Java 직렬화 및 역직렬화에는 다음 단계가 포함됩니다. 직렬화 가능 인터페이스를 스트림에 구현하는 클래스 작성(직렬화). 스트림에서 객체를 읽습니다(역직렬화).

Java 직렬화 및 역직렬화 프로세스는 무엇입니까?

Java 직렬화 및 역직렬화 프로세스

Serialization

  1. Serialize 인터페이스를 구현하는 클래스를 작성합니다. Serializable 接口的类。
  2. 创建一个 ObjectOutputStream 对象,并将其与一个文件或字节流关联。
  3. 使用 ObjectOutputStream.writeObject() 方法将对象写入流中。

示例代码:

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

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

    // 省略getter和setter方法

    public static void main(String[] args) {
        Employee employee = new Employee("John", 30);
        
        try (ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("employee.txt"))) {
            out.writeObject(employee);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

反序列化

  1. 创建一个 ObjectInputStream 对象,并将其与一个文件或字节流关联。
  2. 使用 ObjectInputStream.readObject() 方法读取对象。

示例代码:

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

public class DeserializeEmployee {
    public static void main(String[] args) {
        try (ObjectInputStream in = new ObjectInputStream(new FileInputStream("employee.txt"))) {
            Employee employee = (Employee) in.readObject();
            System.out.println(employee.getName() + ", " + employee.getAge());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

注意事项:

  • 只有实现了 Serializable
  • ObjectOutputStream 개체를 생성하고 이를 파일 또는 바이트 스트림과 연결합니다.
  • 스트림에 개체를 쓰려면 ObjectOutputStream.writeObject() 메서드를 사용하세요.
  • 예제 코드:
rrreee🎜🎜Deserialization🎜🎜🎜🎜ObjectInputStream 개체를 생성하고 이를 파일 또는 바이트 스트림과 연결합니다. 🎜🎜객체를 읽으려면 ObjectInputStream.readObject() 메서드를 사용하세요. 🎜🎜🎜샘플 코드: 🎜🎜rrreee🎜🎜참고: 🎜🎜
    🎜 직렬화 가능 인터페이스를 구현하는 클래스만 직렬화할 수 있습니다. 🎜🎜직렬화 및 역직렬화 순서는 일관되어야 합니다. 🎜🎜클래스 구조는 직렬화와 역직렬화 간에 변경될 수 없습니다. 🎜🎜객체 직렬화는 특히 대형 객체의 경우 느릴 수 있습니다. 🎜🎜

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

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