Javaでシリアライズインタフェースを実装する方法

Java でシリアライザーを実装するには、以下の手順に従う必要があります。

シリアライズされるクラスを作成し、Serializableインターフェースを実装します。たとえば、

import java.io.Serializable;

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

    // 构造函数、getter和setter等省略...

    // 其他方法...
}

シリアライズする部分において, ObjectOutputStream クラスを用いて, オブジェクトをファイルやその他の出力ストリームへ書き出す. たとえば:

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

public class SerializationExample {
    public static void main(String[] args) {
        Person person = new Person("Alice", 25);

        try {
            FileOutputStream fileOut = new FileOutputStream("person.ser");
            ObjectOutputStream out = new ObjectOutputStream(fileOut);
            out.writeObject(person);
            out.close();
            fileOut.close();
            System.out.println("对象已序列化到文件中");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上記の例では、Personオブジェクトはシリアライズされて「person.ser」というファイルに書き込まれます。

ファイルやほかの入力ストリームからオブジェクトを逆シリアル化するには、ObjectInputStream クラスを使用します。

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

public class DeserializationExample {
    public static void main(String[] args) {
        try {
            FileInputStream fileIn = new FileInputStream("person.ser");
            ObjectInputStream in = new ObjectInputStream(fileIn);
            Person person = (Person) in.readObject();
            in.close();
            fileIn.close();
            System.out.println("从文件中反序列化对象成功");
            System.out.println("姓名: " + person.getName());
            System.out.println("年龄: " + person.getAge());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

上例では、”person.ser”というファイルからPersonオブジェクトをデシリアライズし、名前と年齢を出力しています。

シリアライズ可能なインターフェースを実装することで、Javaオブジェクトはシリアライズ、デシリアライズされてネットワーク越しに伝送したり永続的なストレージ中に利用できます。

bannerAds