ホームページ >Java >&#&チュートリアル >一時フィールドは Java シリアル化の永続性をどのように制御しますか?
Java の一時フィールドの公開: 永続性制御について
Java のシリアル化には、オブジェクトの状態をストレージ用のバイト ストリームに変換することが含まれます。後でオブジェクトを再作成します。ただし、特定のフィールドは永続化が望ましくない場合があり、一時フィールドの導入につながります。
一時フィールド: 定義
一時フィールド。「transient」で示されます。 " キーワードは、オブジェクトのシリアル化された状態に含めるべきではないキーワードです。これは、オブジェクトがシリアル化されるときに、その一時フィールドがスキップされることを意味します。
一時フィールドの目的
画像と画像を格納する GalleryImage クラスの例を考えてみましょう。サムネイル:
class GalleryImage implements Serializable { private Image image; private transient Image thumbnailImage; }
thumbnailImage は画像から派生するため、元の画像と一緒に保存しないでください。一時的としてマークすると、シリアル化できなくなります。これにより、記憶域が最適化され、シリアル化エラーの可能性が排除されます。
逆シリアル化フィールドと一時フィールド
逆シリアル化すると、オブジェクトの状態はオブジェクトの状態に復元されます。連載化。ただし、一時的なフィールドの場合、それらは自動的には復元されません。たとえば、GalleryImage クラスでは、逆シリアル化後も summnailImage は null のままです。これを回避するには、readObject メソッドをオーバーライドして、プログラムでサムネイル画像を生成します。
private void readObject(ObjectInputStream inputStream) throws IOException, ClassNotFoundException { inputStream.defaultReadObject(); generateThumbnail(); }
一時フィールドの利点
以上が一時フィールドは Java シリアル化の永続性をどのように制御しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。