ホームページ >Java >&#&チュートリアル >一時フィールドは Java シリアル化の永続性をどのように制御しますか?

一時フィールドは Java シリアル化の永続性をどのように制御しますか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-13 11:05:15829ブラウズ

How Do Transient Fields Control Persistence in Java Serialization?

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。