我正在實現擴展Serializable接口的更多類。 我明白,爲serialVersionUID提一個值是很好的。用於Serializable的SerialVersionUID
private static final long serialVersionUID = 1024L;
所以,因爲我將使用所有這些類,我應該給出的serialVersionUID相同的數值爲每個類,或者相反,他們有什麼不同?
謝謝。
我正在實現擴展Serializable接口的更多類。 我明白,爲serialVersionUID提一個值是很好的。用於Serializable的SerialVersionUID
private static final long serialVersionUID = 1024L;
所以,因爲我將使用所有這些類,我應該給出的serialVersionUID相同的數值爲每個類,或者相反,他們有什麼不同?
謝謝。
它們不必是不同的,也不一定是相同的。它僅用於確保某個序列化對象可以被該類反序列化。基本上,如果你改變了序列化類的代碼,你也應該改變這個值。
serialVersionUID
對於一個類與絕對不相關的類是完全沒有關係的。一個推論是,一個類的serialVersionUID
絕對沒有效果不同類的。
因此,如果您願意,您可以對所有類使用相同的類,並且在任何類更改時批量更新它們。你應該明白它會這樣做的含義。
關鍵是如果您稍後在使用原始序列化表格incompatible更改某個類時必須更改serialVersionUID。除此之外,您可以使用該字段的任何值。
既然你聲明瞭它是私有的,這個值對這個類是唯一的,它是唯一的,而不是一個繼承的值。當您嘗試反序列化的舊對象
http://docs.oracle.com/javase/1.5.0/docs/api/java/io/Serializable.html
在這個類改變未來這個數值爲任何其他值會給你一個invalidclassexception。
乾杯!
哦,對!謝謝 – Madrugada
歡迎您:-) – r0ast3d