ホームページ  >  記事  >  Java  >  シリアル化とは何ですか?シリアル化の詳細な紹介

シリアル化とは何ですか?シリアル化の詳細な紹介

PHP中文网
PHP中文网オリジナル
2017-06-20 14:25:493009ブラウズ

一連載

1. 連載とは何ですか?

メモリ内のオブジェクトをハードディスクに書き込むことはシリアル化であり、出力データが通常のテキストではなくオブジェクトであることを除いて、通常の出力と何ら変わりません。

2. シリアル化の役割

メモリ内のデータの保存は一時的なものであるため、オブジェクトを長期間保存する必要がある場合は、オブジェクトをハードディスクに書き込む必要があり、その結果シリアル化が行われます。 。

3. シリアル化の条件

オブジェクトをシリアル化するには、そのオブジェクトが属するクラスが Serializable インターフェイスを実装する必要があります。このインターフェイスは、フィールドと 抽象メソッドを持たない象徴的なインターフェイスであり、JVM と遭遇します。このインターフェイスは、シリアル化されたバージョン番号をクラスに割り当てます。

4. オブジェクトがシリアル化され、プライベート型変数を含むオブジェクト内のグローバル変数がハードディスクに書き込まれます。

5. シリアル化できないフィールド:

  1. 静的フィールドの値は、シリアル化中に設定された値ではなく、現在の JVM の値です。

  2. トランジェントによって変更されたフィールドはシリアル化できません。

6. シリアル化操作:

OutputStream ops=new FileOuptStream(path);
ObjectOuptStream oos=new ObjectOutputStream(ops);
Object obj=new Ojbect();
oos.writeObject(obj);

2. 逆シリアル化とは

ハードディスク内のデータをメモリに書き込み、取得することです。ファイルに保存されているオブジェクト。

2. 逆シリアル化操作の要件

逆シリアル化の順序は、シリアル化の順序と一致している必要があります。

3. シリアル化バージョン番号

⑴ シリアル化中に、シリアル化バージョン番号と呼ばれる長い番号が生成され、シリアル化ファイルとクラス ファイルに同時に保存されます。この 2 つは逆シリアル化中に比較されます。

数値が同じである場合、シリアル化は成功します。同じでない場合、逆シリアル化は実行できません。

⑵シリアル化されたバージョン番号は、エンティティ クラスのバージョンをマークするために使用されます。エンティティ クラスが変更されると、シリアル化されたバージョン番号が明示的に指定されない場合、システムは自動的に新しいバージョン番号を生成するため、2 つのバージョン番号が使用されます。が異なるため、シリアル化できません。

通常、シリアル化のバージョン番号は、シリアル化する必要があるエンティティ クラスに明示的に設定されます。

⑶ 再コンパイルしないと、必ずしも新しいシリアル化されたバージョン番号が生成されるわけではありません。エンティティ クラスが変更された場合にのみ、新しいシリアル化されたバージョン番号が生成されます。

⑷解析処理

デシリアライズする際は、まずシリアル化ファイルとクラスファイルのシリアル化バージョン番号が同じかどうかを比較し、同じであれば、そのシリアル化ファイルは現在の

で生成されたものであることを意味します。 class ファイルは逆シリアル化できます。異なる場合は、現在のクラス ファイルによって生成されておらず、バージョンが一貫していないため、逆シリアル化できないことを意味します。

⑸逆シーケンス操作:

InputStream is=new FileInputStream(path);
ObjectInputStream ois=new ObjectIputStream(is);
Object obj=ois.readObject();

以上がシリアル化とは何ですか?シリアル化の詳細な紹介の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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