2012-12-19 52 views

回答

0

Java提供了一個機制,稱爲對象序列,其中一個對象可以被表示爲字節序列,包括該對象的數據的信息以及關於該對象的類型和類型存儲在對象數據。

將序列化對象寫入文件後,可以從文件讀取並反序列化,即可以使用表示對象及其數據的類型信息和字節來重新創建內存中的對象。

http://www.tutorialspoint.com/java/java_serialization.htm

0
serialVersionUID is for Serialization Purpose. 
private static final long serialVersionUID = 1L; 

沒有的serialVersionUID有時有Seri​​alzationException。參考java.io.Serializable

0

你不能獲得比文檔的java.io.Serializable接口一個更好的解釋:

的序列化運行聯營每個序列化類 版本號,稱爲的serialVersionUID,這是在 使用反序列化來驗證序列化的對象的發送者和接收者已經爲該對象加載了與序列化兼容的類別 。如果接收方已加載 對象的類,該對象的serialVersionUID與 對應的發送者類不同,則反序列化將導致InvalidClassException。可序列化類可以通過聲明名爲 「的serialVersionUID」字段必須是靜態的,最終明確地聲明自己的 的serialVersionUID,並long類型:

ANY-ACCESS-MODIFIER靜態最後的serialVersionUID長= 42L;

如果一個序列化類沒有顯式聲明 的serialVersionUID,則序列化運行時將基於各方面的類 ,作爲Java(TM)對象序列化 描述計算該類的 默認的serialVersionUID值規範。然而,強烈建議所有 序列化的類顯式聲明的serialVersionUID值,因爲 默認serialVersionUID的計算是類 細節,可能會因編譯器實現變化高度敏感,並能 期間 反序列化從而導致意外InvalidClassExceptions。因此,爲了保證跨不同java編譯器實現的一致的serialVersionUID 值,可序列化的類必須聲明顯式的serialVersionUID值。它也是 強烈建議顯式serialVersionUID聲明儘可能使用 專用修飾符,因爲這些聲明僅適用於 立即聲明的類 - serialVersionUID字段不是 作爲繼承成員有用。