※上記の広告は60日以上更新のないWIKIに表示されています。更新することで広告が下部へ移動します。

シリアライズ


シリアライズとは

 Javaの世界でのシリアライズは、日本語に訳すと「直列化」という意味になる。「シリアライズ」とは、オブジェクトをバイト列やXMLファイルなどに置き換えて扱えるようにすることをいう。逆に、バイト列からXMLファイルなどに変換することを「デシリアライズ」という。

Javaで直列化するには

 Javaでは、java.io.Serializableインタフェースやjava.io.Externalizableインタフェースを実装することで、そのクラスのオブジェクトはシリアライズ可能なクラスを作ることができる。

直列化するために気をつけなければいけないこと

 Serealizableインタフェースを実装したクラスが全てシリアライズ可能というわけではない。
 以下のようなことに注意しなければならない。
  • シリアライズするクラス内のフィールド(メンバー変数)は基本的な型(プリミティブ型)かシリアライズ可能なクラスでなければならない。
  • シリアライズ対象クラスのスーパークラス(親クラス)がシリアライズ可能でない場合、スーパークラスにデフォルトコンストラクター(引数の無いコンストラクター)が無いか、あるいはprivateになっていてアクセスできない場合、シリアライズできない。
  • シリアライズ対象クラスがSerializableを実装しているのにスーパークラスがSerializableを実装していない場合、スーパークラスが持っている変数の内容は転送されない

シリアライズの対象・非対象フィールドの指定方法

 フィールドの定義にtransientを付けると、Serializableをimplementsしたクラスであっても そのフィールドはシリアライズの対象外になる。受け渡しには使わないが一時的に使うフィールド等に利用する。
 また、staticなフィールドもシリアライズの対象外となる。