2012-01-12 218 views
6

是否有任何可行的原因,爲什麼serialVersionUID字段未命名爲SERIAL_VERSION_UID?serialVersionUID命名約定

根據該文檔爲java.io.Serializable

序列化類可以通過聲明名爲「serialVersionUID的」 最終一個領域,必須靜態的,明確宣佈了自己的serialVersionUID ,和long類型:

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

雖然參照Java Naming Conventions所有靜態最終(常量)字段應該capitilized具有以下劃線分離其片段。

+1

這就是編寫序列化API的方式;) – fge 2012-01-12 14:08:21

回答

4

很可能是因爲serialVersionUID是在Java序列化API中定義之前存在此類約定。

我發現太陽在1997年發表了一份名爲Java Code Conventions,在第9節說,第16頁‘「的聲明的類常量和ANSI的 常量應該用下劃線(分隔的詞來alluppercase變量名’ )。「_

所以我的猜測是,Sun並沒有在自己的代碼上強制執行自己的標準。

+0

不要這麼認爲,serialVersionUID是在Java 1.5中引入的 – 2012-01-12 14:16:20

+1

我糾正了,並編輯了我的評論。 – Dev 2012-01-12 14:27:06