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オブジェクトはシリアライズ、デシリアライズされてネットワーク越しに伝送したり永続的なストレージ中に利用できます。