概要
状態:-
閲覧数:1,821
投稿日:2013-11-04
更新日:2013-11-04
シリアライズ(直列化)とは?
・そのオブジェクトの状態を表す変数(フィールド)と、場合によってはオブジェクトの種類(クラス)を表すなんらかの識別子を、「ファイル化できるようなバイト列やXMLフォーマットの形」に書き出すこと
シリアライズの目的
・オブジェクトの表すデータを、「ファイル保存」「ファイル読込」「ネットワーク送信」するため
java.io.Serializableインタフェース
・オブジェクトをシリアライズ可能にするには、そのクラスがjava.io.Serializableインタフェース(以下、Serializableインタフェース)を実装する必要がある
・そのオブジェクトの状態を表す変数(フィールド)と、場合によってはオブジェクトの種類(クラス)を表すなんらかの識別子を、「ファイル化できるようなバイト列やXMLフォーマットの形」に書き出すこと
シリアライズの目的
・オブジェクトの表すデータを、「ファイル保存」「ファイル読込」「ネットワーク送信」するため
java.io.Serializableインタフェース
・オブジェクトをシリアライズ可能にするには、そのクラスがjava.io.Serializableインタフェース(以下、Serializableインタフェース)を実装する必要がある
import java.io.Serializable;
@SuppressWarnings("serial")
public class RecordItem implements Serializable{
Serializableインタフェースの特徴
特徴
Serializableインタフェースの特徴
・メソッド、フィールドがなく、「シリアライズが可能であるという意味を識別する機能」だけを備えている
・implements Serializable とだけ記述すれば、他にメソッドを実装するなどの手間は必要ない
注意事項
・実装クラス内のフィールドはプリミティブ型(intやboolean)か、もしくはシリアライズ可能なクラスでなければならない
オブジェクトのシリアライズで使用されるクラス
・ObjectOutputStreamクラス
・ObjectInputStreamクラス
Serializableをimplementsしていない状態で、そのオブジェクトをシリアライズしようとすると?
・NotSerializableExceptionが発生
シリアライズできないクラス
・例えばStreamやConnectionはシリアライズできない
公式ページ
・Java SE 7 Serialization-related APIs and Developer Guides
・Serializable (Java Platform SE 7 )