4. オブジェクトのシリアライズ
入出力(java.io) 4章 オブジェクトのシリアライズ
4.1. java.io.Serializable任意のクラスのデータをファイルに保存したり、ファイルから復元したりする事が考えられます。独自に保存・復元のプログラムを記述する事も可能ですが、Javaでは簡単にこの仕組みを実現できる機能が提供されています。この章ではその機能について説明します。 あるクラスのオブジェクトが保存・復元できる事を、「直列化可能である」と言います。また保存・復元できるかどうかを「直列化可能性」と呼びます。Javaではクラスを直列化可能にするためには、「java.io.Serializable」インタフェースを実装する必要があります。 「Serializable」インタフェースには何のメソッドも定義されていません。このインタフェースを「implements」宣言に加えるだけで、該当するクラスは直列化可能になります。 public class Dog implements Serializable{
private int age;
private String name;
....
}
サンプルクラス「Dog」は直列化可能です。Javaでは「static」でないメンバ変数を直列化しますので、「Dog」のインスタンス変数「age」「name」の値は保存・復元されます。もし直列化したくないインスタンス変数がある場合は「transient」キーワードを使用します。 public class Cat implements Serializable{
private int age;
private String name;
private transient String nickName;
....
}
上のクラス「Cat」の場合は、変数「nickName」の値は直列化されません。 (実習課題1)以下のクラスを作成しなさい。プログラムとして実行できなくて良い。
|
![]()
![]()
|