基本的な事についてまとめました。SerializableとはSerializableは日本語で「直列化」といいます。オブジェクトを出力ストリームに書き出すことをシリアライズまたは直列化と呼びます。シリアライズされたオブジェクトを読み込んで、メモリ上に復元することをデシリアライズまたは直列化復元と呼びます。通常、オブジェクトはそのままストリームに書き出して読み込むことが出来ないので、読み書きできる形にデータを整形する事をシリアライズ(直列化)と呼んでいるようです。オブジェクトをシリアライズ可能にするにはjava.io.Serializableインタフェースを実装する必要があります。メソッドや定数をもたないインタフェースであるため、オーバーライドするメソッドはありません。インタフェースを実装してないオブジェクトをシリアライズしようとするとNotSerializableExceptionが発生します。実装するだけで全てシリアライズ可能になるわけではなく、このクラスはシリアライズ可能ですと宣言するようなものになります。Serializableを使用したオブジェクトの読み書きシリアライズしたいクラスPerson.javaにSerializableを実装します。オブジェクトをストリーム(ファイル)に書き出し、ObjectInputStreamで保存したオブジェクトをストリーム(ファイル)から読み込みます。シリアライズの対象オブジェクトのシリアライズは、オブジェクトが保持する固有データ、つまりインスタンス変数がシリアライズ対象のデータとなります。変数はシリアライズ対象外です。明示的にシリアライズ対象外にしたい場合はtransient修飾子を付けます。インタフェースを実装していればシリアライズ可能です。{...}デシリアライズ時のコンストラクタの挙動ついて今までの例ではObjectInputStream#readObjectでデシリアライズする場合、ファイルからデータを読み込んでオブジェクトの復元をおこなっているため、コンストラクタが呼び出されません。インタフェースを実装している場合、デシリアライズの際にスーパークラスのコンストラクタが呼び出されてインスタンス化されます。警告が出たからとりあえず付けてたという人も多いはず。これはオブジェクトの書き出し・読み込み前後でクラスのバージョンが異なっていないかを識別する為のものです。クラスのメンバに変更があればこの数値も変更する必要があります。見ると以下のように記述されており、定義されてない場合は自動で生成されるようですが、明示的に定義する方がいいようです。直列化可能クラスがserialVersionUIDを明示的に宣言しない場合、直列化ランタイムは「Java(TM)オブジェクト直列化仕様」で説明されているように、クラスのさまざまな側面に基づいて、クラスのserialVersionUIDのデフォルト値を計算します。すべての直列化可能クラスがserialVersionUID値を明示的に宣言することを強くお薦めします。オブジェクトについての基本です。使い方です...2015-10-31【Java】スレッドの基本と生成方法スレッドの基本と生成についてまとめました。ワークフローのスケジューリングについて。NOTESスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。