2016-11-03 49 views
2

向我的Java程序添加文檔時,我意識到大多數類需要聲明一個serialVersionUID常量屬性。我應該怎樣記錄這個屬性?如果我使用默認與生成的串行版本UID,是否以不同的方式記錄它?SerialVersionUID JavaDoc?

/** 
* What goes here? "A unique serial version identifier" 
*/ 
private static final long serialVersionUID = -8922096951749901688L; 

回答

2

首先,你所提供的serialVersionUID評論似乎是正確的,但不必要

serialVersionUID被要求作爲(所有Java類不)是Serializable對象的一部分,並且該對象的序列化/反序列化過程中使用。

作爲一般規則。 經常檢查API
在這種情況下,API Serializable,在底部!!

序列化運行時相關聯,每個序列化類版本號,稱爲的serialVersionUID,其被反序列化過程用於驗證序列化對象的發送者和接收者都加載的類該對象是相對於兼容序列化。如果接收者已經爲與對應的發送者類具有不同serialVersionUID的對象加載了類,則反序列化將導致InvalidClassException。可序列化類可以通過聲明名爲「serialVersionUID的」字段必須是靜態的,最終明確宣佈了自己的serialVersionUID,並long類型:

ANY-ACCESS-MODIFIER static final long serialVersionUID = 42L; 

所以你說,這實際上應該沒有記錄,因爲它已經有javadoc了?當我省略了javadoc和鼠標懸停它,它不會顯示任何東西:/

這是Serializable接口的一部分,所以恕我直言,是沒有必要的......反正,你可以使用自己的評論+ @see註解。這樣的事情(不知道如果將工作,現在不能創建javadoc ...)

/** 
* A unique serial version identifier 
* @see Serializable#serialVersionUID 
*/ 
+0

所以你說它應該實際上沒有記錄任何因爲它已經有javadoc了嗎?當我省略javadoc和mouseover時,它不會顯示任何內容:/ –

+2

@NoodleofDeath大多數Java開發人員都知道它的用途。可能最有用和最簡單的文檔是鏈接到['Serializable'](http://docs.oracle.com/javase/8/docs/api/java/io/Serializable.html)javadocs並離開它。當然,如果你願意,你可以自由添加更多信息。 – 4castle

+0

@NoodleofDeath檢查我的更新... 4castle是正確的...幾乎人們會知道什麼已經... –