Java のネイティブシリアライゼーションの仕組み
Javaのネイティブシリアライズ機構は、ネットワークでの送信やファイル保存のために、オブジェクトをバイトストリームに変換する処理のことです。Javaのネイティブシリアライズ機構によって、オブジェクトをバイトストリームに変換して送信や保存が実現でき、バイトストリームを再度デシリアライズしてオブジェクトに戻し、オブジェクトの状態を復活させます。
Javaのネイティブシリアライゼーション機構は、シリアライズ可能なクラスをSerializableインタフェースの実装によってマークします。シリアライゼーション処理中は、Javaはオブジェクトの状態をバイトストリームに変換し、オブジェクトのメンバー変数の値とクラスのメタデータが含まれます。デシリアライゼーション処理中は、Javaはバイトストリームをオブジェクトに変換し、オブジェクトの状態を復帰します。
Javaネイティブのシリアライズ機構は、シリアライズとデシリアライズ用にObjectInputStreamとObjectOutputStreamという2つのクラスを提供しています。オブジェクトをObjectOutputStreamに書き込むことでシリアライズでき、ObjectInputStreamからオブジェクトを読み込むことでデシリアライズできます。
シリアライズするクラスはSerializableインターフェースを実装する必要があることに注意してください。また、クラス内の静的でないすべてのメンバ変数もシリアライズ可能である必要があります。クラスにシリアライズ不可能なメンバ変数が含まれている場合、そのクラスのオブジェクトをシリアライズすると、NotSerializableException例外がスローされます。
また、Javaネイティブシリアライゼーション機構にはwriteObject、readObjectといった特殊メソッドがあり、シリアライズおよびデシリアライズ処理中にオブジェクトの状態をカスタマイズ操作できます。これらのメソッドをカスタマイズすることで、オブジェクトの特定フィールドに対するシリアライズおよびデシリアライズ処理を行うことができます。