編集の要約なし
編集の要約なし
6行目: 6行目:
* 実装後、[[ObjectOutputStream|ObjectOutputStream]]、[[ObjectInputStream|ObjectInputStream]]で自由に保存/復元できるようになる
* 実装後、[[ObjectOutputStream|ObjectOutputStream]]、[[ObjectInputStream|ObjectInputStream]]で自由に保存/復元できるようになる
* Has-a関係にあるフィールドも Serializable を実装していれば連鎖して直列化される
* Has-a関係にあるフィールドも Serializable を実装していれば連鎖して直列化される
* 直列化された後に元クラスが修正されてしまう場合に備えて、シリアルバージョンUIDをフィールドに定義しておく必要がある
* クラスが新しいバージョンになった後は、シリアルバージョンUIDの数値も変更する


  import java.io.*;
  import java.io.*;
  public class Hero implements Serializable {
  public class Hero implements Serializable {
    private static final long serialVersionUID = 39048750239745L;    // ランダムな数値でOK
  ...
  ...

2019年7月2日 (火) 23:59時点における版

< Java基本文法

  • 直列化によって、インスタンス内の全データをバイナリに変換できる
  • ストリームを使ってファイルに保存したり、ネットワークで伝送したりできる
  • クラスを直列化に対応させるために Serializable を実装する必要がある
  • 実装後、ObjectOutputStreamObjectInputStreamで自由に保存/復元できるようになる
  • Has-a関係にあるフィールドも Serializable を実装していれば連鎖して直列化される
  • 直列化された後に元クラスが修正されてしまう場合に備えて、シリアルバージョンUIDをフィールドに定義しておく必要がある
  • クラスが新しいバージョンになった後は、シリアルバージョンUIDの数値も変更する
import java.io.*;
public class Hero implements Serializable {
    private static final long serialVersionUID = 39048750239745L;    // ランダムな数値でOK
...