目次へ

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)

以下のクラスを作成しなさい。プログラムとして実行できなくて良い。

  • 「Serializable」インタフェースを実装する
  • メンバ変数は3つ以上、持つようにする
  • 「transient」キーワードを持つメンバ変数を1つは持つようにする

解答例はこちら

↑このページの先頭へ

こちらもチェック!

PR
  • XMLDB.jp