オブジェクトの直列化

■直列化(シリアライズ)
オブジェクトの参照をたどって関連するオブジェクトをまとめてバイト列(バイトストリーム)の形式に変換すること

■シリアライズ
直列化可能なオブジェクトをシリアライズする場合には java.io.ObjectOutputStreamを使用

■デシリアライズ
直列化したオブジェクトを復元する場合にはjava.io.ObjectInputStreamを使用


■直列化処理のカスタマイズ
1)シリアライズのカスタマイズ
writeObject(java.io.ObjectOutputStream)をSerializableを実装したクラスに定義する

private void writeObject(java.io.ObjectOutputStream out) throws IOException {
  out.defaultWriteObject();
  //ここに処理を書く
}


2)デシリアライズのカスタマイズ
readObject(java.io.ObjectOutputStream)をSerializableを実装したクラスに定義する

private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException
  in.defaultReadObject();
  //ここに処理を書く
}


■直列化されないメソッド
  • transient有り
  • static有り


■マーカ・インタフェース
メソッドやフィールドを1つも持たない空のインタフェース(マーカ・インタフェース)⇒Serializable


■シリアル化ストリームの内容
  • 最初の2バイトは、シリアル化ストリームに固有のマジックナンバー ⇒例「AC ED」
  • 次の2バイトは、シリアル化仕様のバージョン番号 ⇒例「00 05」
  • 以降、オブジェクトの内容

■シリアル化ストリームが使用する文字コード
Unicodeの変形版であるUTF


■直列化仕様が書いてあるページ
http://java.sun.com/j2se/1.3/ja/docs/ja/guide/seri...
2006年06月09日(金) 21:12:14 Modified by alivealive




スマートフォン版で見る