2011-06-17 80 views
0

對象序列化是將對象的狀態保存爲一系列字節的過程。它是否僅保存實例變量或對象方法(如getter和setter方法)? 一旦我們將對象寫入輸出流或某些文本文件,它如何通過網絡傳輸? 我們是否將java對象狀態寫入文本文件中?對?對象序列化過程?

回答

1

如果您使用Java,當您序列化一個對象時,類代碼本身不會被序列化。相反,輸出具有包含對象類名稱的元數據(或對某個類的某種引用)。

當你反序列化時,java序列化機制會在你的類路徑中尋找這個類。

要通過網絡傳輸,用java,您將使用ObjectOutputStream與網絡流類..

閱讀,這也:java serialization over network

希望這有助於!

+0

所以簡而言之只有對象的狀態,即實例變量被寫入文件或輸出流。正確?在反序列化期間,這個狀態在服務器端的classpath中被分配給特定類的對象?在文件的情況下它是簡單的文本文件? –

+0

所有變量都是序列化的,只有那些沒有被序列化的'transient'關鍵字。在服務器端,您需要與客戶端相同的類(包和名稱)。序列化不依賴於你的最終輸出(網絡或文本文件),所以這不是問題。 –

+0

讓我總結,以避免任何混淆。基本上,新的對象將在服務器端創建,具有相同的位於持久對象中的實例變量值。正確? –

0

嘗試閱讀Python泡菜(Python的序列化)教程的基本知識:

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

網絡傳輸是一個單獨的問題,可以在不串行化處理。基本上通過TCP/IP連接發送序列化對象或文件沒有區別。