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)  編輯  收藏

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


          網站導航:
           
          主站蜘蛛池模板: 剑川县| 阳谷县| 湟中县| 信宜市| 镇江市| 姚安县| 长岭县| 仁化县| 微山县| 井冈山市| 耒阳市| 怀集县| 于都县| 武乡县| 竹北市| 古蔺县| 桐城市| 将乐县| 元朗区| 宾川县| 衡山县| 台东县| 城口县| 平乡县| 安康市| 视频| 山西省| 电白县| 锡林郭勒盟| 石家庄市| 沁阳市| 安龙县| 时尚| 安徽省| 松阳县| 阜南县| 惠安县| 通州市| 图木舒克市| 文登市| 双桥区|