2011-06-17 14 views
0

オブジェクトのシリアル化は、オブジェクトの状態を一連のバイトに保存するプロセスです。インスタンス変数またはゲットメソッドとセッターメソッドのようなオブジェクトメソッドのみを保存しますか? 出力ストリームやテキストファイルにオブジェクトを書き込むと、ネットワーク経由でどのように送信されますか? javaオブジェクトの状態をテキストファイルに書き出しますか?右?オブジェクトのシリアル化プロセス?

答えて

1

Javaを使用している場合、オブジェクトをシリアル化すると、クラスコード自体はシリアル化されません。代わりに、出力には、オブジェクトクラス名(またはクラスへの何らかの参照)を持つメタデータがあります。

デシリアライズすると、java直列化のメカニズムがクラスパス内のこのclasを探します。

は..あなたがネットワークストリームクラスとObjectOutputStreamを使用しますが、Javaを使用し、ネットワーク経由で送信

これも読むには:このことができますjava serialization over network

希望を!

+0

したがって、オブジェクトの状態、つまりインスタンス変数はファイルまたは出力ストリームに書き込まれます。正しい?非直列化の間、この状態はサーバ側のクラスパスの特定のクラスのオブジェクトに割り当てられますか?ファイルの場合は単純なテキストファイルですか? –

+0

すべての変数はシリアライズされますが、 'transient'キーワードを持つものだけがシリアライズされません。サーバー側では、クライアント側と同じクラス(パッケージと名前)が必要です。シリアライゼーションは最終出力(ネットワークまたはテキストファイル)に依存しないので、これは問題ではありません。 –

+0

混乱を避けるために要約しましょう。基本的に、永続オブジェクトにあるインスタンス変数と同じ値を持つサーバサイドに新しいオブジェクトが作成されます。正しい? –

0

は読んでPythonのピクルス(Pythonのシリアライズ)基本的な知識のためのチュートリアルを試してみてください。

http://docs.python.org/library/pickle.html

ネットワーク伝送は、別の問題であり、直列化せずに対処することができます。基本的には、TCP/IP接続を介してシリアル化オブジェクトまたはファイルを送信することは異なりません。

関連する問題