153

SerializableクラスがJavaにあるとは、正確にはどういう意味ですか? または一般的に、それについては...

4

11 に答える 11

146

シリアル化とは、たとえばディスクに保存するために、オブジェクトをメモリから一連のビットに永続化することです。デシリアライゼーションは逆です。ディスクからデータを読み取って、オブジェクトをハイドレート/作成します。

あなたの質問の文脈では、クラスに実装されている場合、このクラスは異なるシリアライザーによって自動的にシリアライズおよびデシリアライズできるインターフェースです。

于 2010-08-07T09:40:09.907 に答える
42

これは、クラスのインスタンスをバイトストリームに変換して (たとえば、ファイルに保存するために)、再度クラスに変換できることを意味します。この再読み込みは、プログラムの別のインスタンスで、または別のマシンで発生する可能性があります。ただし、(任意の言語での) シリアル化にはあらゆる種類の問題が伴います。特に、シリアル化可能なオブジェクト内に他のオブジェクトへの参照がある場合はそうです。

于 2010-08-07T09:39:07.690 に答える
12

シリアル化には、オブジェクトの現在の状態をストリームに保存し、そのストリームから同等のオブジェクトを復元することが含まれます。ストリームはオブジェクトのコンテナとして機能します

于 2010-08-07T09:47:40.500 に答える
6

Serializable はインターフェイスのように呼び出されますが、実行時に Serialization サブシステムへのフラグに似ています。このオブジェクトは保存できると表示されます。シリアル化できないオブジェクトと volatile とマークされたものを除いて、すべての Objects インスタンス変数が保存されます。

アプリケーションがオプションとして色を変更できると想像してください。その設定を外部に保持することなく、実行するたびに色を変更する必要があります。

于 2010-08-07T09:40:18.970 に答える
4

シリアル化は、オブジェクトとデータをファイルに保存または書き込むための手法です。ObjectOutputStreamFileOutputStreamクラスを使用する。これらのクラスには、オブジェクトを永続化するための特定のメソッドがあります。お気に入りwriteObject();

数字による明確な説明のために。詳細については、ここを参照してください

于 2012-01-13T09:10:27.410 に答える
3

別の視点から提示する。シリアル化は、「マーカー インターフェイス」と呼ばれる一種のインターフェイスです。マーカー インターフェイスは、メソッド宣言を含まないインターフェイスですが、そのインターフェイスを実装するクラスを何らかのプロパティを持つものとして指定 (または「マーク」) するだけです。ポリモーフィズムを理解していれば、これは非常に理にかなっています。Serializable マーカー インターフェイスの場合、引数がインターフェイスを実装していない場合、ObjectOutputStream.write(Object) メソッドは失敗します。これは Java の潜在的な間違いです。ObjectOutputStream.write(Serializable) である可能性があります。

強くお勧めします : 詳細については、Joshua Bloch による「Effective Java」の項目 37 をお読みください。

于 2014-06-02T09:41:15.593 に答える
2

シリアル化:オブジェクトの状態をファイル/ネットワークまたは任意の場所に書き込みます。(Javaオブジェクト対応形態からファイル対応形態またはネットワーク対応形態を意味する)

逆シリアル化:ファイル/ネットワークまたは任意の場所からオブジェクトの状態を読み取ります。(ファイル/ネットワーク対応形式からJavaオブジェクト対応形式を意味する)

于 2015-10-25T18:48:51.157 に答える
1

他の答えに加えて、一般性に関して。シリアル化は、たとえばObjective-Cではアーカイブと呼ばれることもあります。

于 2010-08-07T11:53:28.997 に答える