posts - 495,  comments - 11,  trackbacks - 0

          今天突然接到淘寶的電話面試,問了一些問題,其中一個是關于Java序列化的

          問題大概就是serialVersionUID的作用之類的吧,當時回答是憑感覺和經驗回答的,后來通過測試,我的回答是正確的,這里再總結下序列化的問題

          1.Java的序列化機制只序列化對象的屬性值,而不會去序列化什么所謂的方法,列化機制只保存對象的類型信息,屬性的類型信息和屬性值,和方法沒有什么關系,你就是給這個類增加10000個方法,序列化內容也不會增加任何東西。

          2.對于需要序列化和反序列化的的實體,最好加上serialVersionUID,并不要隨便更改其值。

          ?????? 對于一個實體User好啦,實現了java.io.Serializable接口,但沒有加上serialVersionUID,先實例化一個User對象并將它序列化到磁盤上,然后再反序列化,OK,這是沒有問題的!看下面的:

          ?????? 在User類里再增加一個屬性,接著再將之前序列化的文件反序列化成User對象,報錯?。?!為何?就是因為沒有加上serialVersionUID!

          ?????? 如果User加上了serialVersionUID,給User增加屬性后,再將之前序列化的文件反序列化回User對象,是沒有問題的??!

          3.總結

          ?????? serialVersionUID 用來表明類的不同版本間的兼容性。如果你修改了此類, 要修改此值。否則以前用老版本的類序列化的類恢復時會出錯。為了在反序列化時,確保類版本的兼容性,最好在每個要序列化的類中加入private static final long serialVersionUID這個屬性,具體數值自己定義。

          posted on 2010-04-24 23:08 jadmin 閱讀(110) 評論(0)  編輯  收藏

          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 大庆市| 乌审旗| 宁河县| 类乌齐县| 饶平县| 武宁县| 金昌市| 恩施市| 左贡县| 河曲县| 黄浦区| 富平县| 海淀区| 乐亭县| 长宁区| 卢湾区| 中阳县| 车险| 宜川县| 凤台县| 涞源县| 葵青区| 芒康县| 湘潭县| 兴化市| 武乡县| 成安县| 英德市| 邯郸县| 兖州市| 晋城| 鄂州市| 皮山县| 灵璧县| 会东县| 德令哈市| 启东市| 顺昌县| 西林县| 黑水县| 西安市|