目次

シリアライズ

  • シリアライズできるオブジェクトは、java.io.Serializableインタフェースを実装するクラスか、そのクラスのサブクラス。
    • このインタフェースを実装したクラスから作られたオブジェクトは、 ObjectInputStream/ObjectOutputStream によって入出力可能。
    • こうして作られた直列化可能オブジェクトの入出力では、このオブジェクトが保持している他のオブジェクトへの参照を自動的辿って、関連するオブジェクトが全て入出力される。
  • java.io.Serializableインタフェースは定義が空なので、マーカーインタフェースである。
    • 定義が空なので、実装すると言っても、クラス宣言に "implements java.io.Serializable" と記述するだけ。
  • java.io.Externalizable インタフェースを実行するとシリアライズのプロセスを制御できる。
  • tranient修飾子、static修飾子が付いている変数・メソッドはシリアライズ対象外になる。

シリアライズの利用場面

  • オブジェクトをファイルに保存して持続的 (persistent) に利用する。
  • ネットワーキングでソケットストリームを用いてリモートホスト間でやりとりする。
  • ディープコピー