關(guān)于實(shí)現(xiàn)序列化接口的類提示沒有定義serialVersionUID域

          The serializable class XXX does not declare a static final serialVersionUID field of type long

          可序列化的類 CreateBPOVIEW 未聲明類型為 long 的靜態(tài)終態(tài) serialVersionUID 字
           段

          serialVersionUID作用:
          序列化時(shí)為了保持版本的兼容性,即在版本升級時(shí)反序列化仍保持對象的唯一性。

          你可以隨便寫一個(gè),在Eclipse中它替你生成一個(gè),有兩種生成方式:
          一個(gè)是默認(rèn)的1L,比如:private static final long serialVersionUID = 1L;
          一個(gè)是根據(jù)類名、接口名、成員方法及屬性等來生成一個(gè)64位的哈希字段,比如:private static final long serialVersionUID = -8940196742313994740L;之類的。

          當(dāng)你一個(gè)類實(shí)現(xiàn)了Serializable接口,如果沒有定義serialVersionUID,Eclipse會(huì)提供這個(gè)提示功能告訴你去定義之。
          在Eclipse中點(diǎn)擊類中warning的圖標(biāo)一下,Eclipse就會(huì)自動(dòng)給定兩種生成的方式,如上面所述。如果不想定義它,在Eclipse的設(shè)置中也可以把它關(guān)掉的,設(shè)置如下:
          Window ==> Preferences ==> Java ==> Compiler ==> Error/Warnings ==> Potential programming problems
          將Serializable class without serialVersionUID的warning改成ignore即可。

          如果你沒有考慮到兼容性問題時(shí),就把它關(guān)掉,不過有這個(gè)功能是好的,只要任何類別實(shí)現(xiàn)了Serializable這個(gè)接口的話,如果沒有加入serialVersionUID,Eclipse都會(huì)給你warning提示,這個(gè)serialVersionUID為了讓該類別Serializable向后兼容。

          如果你的類Serialized存到硬盤上面后,可是后來你卻更改了類別的field(增加或減少或改名),當(dāng)你Deserialize時(shí),就會(huì)出現(xiàn)Exception的,這樣就會(huì)造成不兼容性的問題。

          但當(dāng)serialVersionUID相同時(shí),它就會(huì)將不一樣的field以type的預(yù)設(shè)值Deserialize,這個(gè)可以避開不兼容性的問題。

          posted on 2006-06-28 21:12 baim 閱讀(322) 評論(0)  編輯  收藏 所屬分類: Java

          <2006年6月>
          28293031123
          45678910
          11121314151617
          18192021222324
          2526272829301
          2345678

          導(dǎo)航

          常用鏈接

          隨筆分類(27)

          隨筆檔案(28)

          搜索

          最新評論

          主站蜘蛛池模板: 元谋县| 通山县| 应用必备| 昆明市| 巍山| 耒阳市| 宣化县| 雷山县| 阿拉善右旗| 卓尼县| 民县| 镇远县| 西盟| 扎鲁特旗| 临湘市| 忻城县| 万山特区| 镇雄县| 麻阳| 民勤县| 佛坪县| 体育| 乌鲁木齐市| 长子县| 凤翔县| 青铜峡市| 马龙县| 阳新县| 卓资县| 海南省| 彭州市| 澄迈县| 包头市| 蕉岭县| 台北市| 建湖县| 甘孜县| 都安| 晋江市| 秦安县| 呼图壁县|