ホームページ  >  記事  >  Java  >  Java I/O ストリームはシリアル化されたオブジェクトをどのように処理しますか?

Java I/O ストリームはシリアル化されたオブジェクトをどのように処理しますか?

WBOY
WBOYオリジナル
2024-04-13 13:18:01928ブラウズ

Java I/O ストリームは、送信または保存のためにオブジェクトをシリアル化および逆シリアル化できます。具体的な手順は次のとおりです。オブジェクトに Serializable インターフェイスを実装し、入力ストリーム Get から読み取ったオブジェクトをシリアル化します。バイト ストリーム。ObjectInputStream を使用してバイト ストリームをオブジェクトに逆シリアル化します。

Java I/O流如何处理序列化对象?

Java I/O ストリーム処理のシリアル化されたオブジェクト

はじめに
シリアル化はプロセスですオブジェクトをバイトのストリームに変換して、ネットワークまたはストレージデバイス上で送信または保存できるようにすること。逆シリアル化はその逆のプロセスで、バイト ストリームからオブジェクトを再構築します。 Java では、シリアル化と逆シリアル化は I/O ストリームを通じて行われます。

オブジェクトのシリアル化
オブジェクトをシリアル化するには、次のことを行う必要があります。

  1. オブジェクトに Serializable インターフェイスを実装させます。
  2. ObjectOutputStream を使用して、オブジェクトを出力ストリームに書き込みます。
// 序列化一个对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("object.ser"));
oos.writeObject(object);
oos.close();

オブジェクトの逆シリアル化
オブジェクトを逆シリアル化するには、次の操作を行う必要があります。

  1. 入力ストリーム フローからバイトを読み取ります。
  2. ObjectInputStream を使用して、バイト ストリームをオブジェクトに逆シリアル化します。
// 反序列化一个对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("object.ser"));
Object object = ois.readObject();
ois.close();

実践的なケース
Student クラスを作成し、シリアル化可能にして、シリアル化と逆シリアル化のプロセスをデモしてみましょう:

import java.io.Serializable;

public class Student implements Serializable {
    private int id;
    private String name;

    // 构造函数和 getter/setter 略...
}

public class Main {
    public static void main(String[] args) {
        // 创建一个 Student 对象
        Student student = new Student(1, "John Doe");

        // 序列化该对象
        try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("student.ser"))) {
            oos.writeObject(student);
        } catch (IOException e) {
            e.printStackTrace();
        }

        // 反序列化该对象
        try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream("student.ser"))) {
            Student deserializedStudent = (Student) ois.readObject();
            System.out.println(deserializedStudent.getId() + " " + deserializedStudent.getName());
        } catch (IOException | ClassNotFoundException e) {
            e.printStackTrace();
        }
    }
}

このコードを実行すると、出力: 1 John Doe。オブジェクトが正常にシリアル化および逆シリアル化されたことを示します。

以上がJava I/O ストリームはシリアル化されたオブジェクトをどのように処理しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。