2014-03-03 83 views
1

我目前不明白爲什麼我會選擇序列化一個對象,而不是隻做一個文件輸出,然後讓一個函數讀取該文件。從序列化對象中獲得什麼?爲什麼我會序列化一個對象而不是做文件輸出?

+0

這些都可以被認爲是序列化。你如何堅持/重建對象狀態的細節並沒有真正定義序列化。例如,可以將對象序列化爲YAML,XML或二進制文件,但所有這些都是序列化的形式。這實際上取決於您希望持久化數據的'人類可讀'/便攜性如何,以及您想花費多少時間在翻譯邏輯上。 –

回答

2

使用經過W3C認可的數據交換格式,您幾乎可以在幾乎所有的編程語言中爲讀者和作者提供幾乎全面的支持,從而獲得了讀取和寫入對象數據的行業標準方式。

+0

你的答案比我的好。它應該是第一位的。 – rpax

1

序列化可以很容易地存儲對象 和對象內部的狀態(如果它們是Serializable而不是標記爲transient)。

你的情況好處

想象一下,你有很多不同的類。也許編碼的通用File-to-class解析器難度比readObject()

0

當你serializeobject,要複製的實際byte數據在內存中爲stream。當你回傳到objectde-serialize時,你會得到相同的對象,包括它的內部對象ID,如果你已經將對象的屬性寫入文件,然後再讀入並解釋它,則不會得到該ID。

這意味着,如果你serializeobjectsreference相互集合,當你de-serialize他們,他們將仍然維持其references給對方。這對調試程序也很好。如果發生異常,您可以在用戶計算機上創建內存轉儲,並且如果它們將其發送給您,則可以直接看到內存中的內容以及可能導致的問題。

它也更容易serialize複雜object有許多屬性爲stream比它要建立一些string代表性的數據,你將有回讀,分析和構建新的object它。

真的你得到的是,它更容易/更快,更好的調試。

相關問題