SmileFace
          與java一起走過的日子
          posts - 41,  comments - 8,  trackbacks - 0

          首先要了解java默認的序列化行為,java將一切關于對象的信息都保存了下了,也就是說,有些時候那些不需要保存的也被保存了下來。一般情況下,我們僅僅需要保存邏輯數據就可以了。不需要保存的數據我們可以用關鍵字transient標出。

          例如:

          import java.io.*;

          public class Serial implements Serializable {

           int company_id;

           String company_addr;

           transient boolean company_flag;

          }


          其中的company_flag字段將不會參與序列化與反序列化,但同時也增加了為它初始值的責任。這也是序列化常常導致的問題之一。因為序列化相當于一個只接受數據流的public構造函數,這種對象構造方法是語言之外的。但他仍然是一種形式上的構造函數。如若你的類不能夠通過其他方面來保證初始化,則你需要額外的提供readObject方法,首先正常的反序列化,然后對transient標示的字段進行初始化。

          在不適合的時候,使用java默認的序列化行為可能會帶來速度上的影響,最糟糕的情況是,可能導致溢出。在某些數據結構的實現中,經常會充斥著各種的循環引用,而java的默認序列化行為,并不了解你的對象結構,其結果就是java試圖通過一種昂貴的“圖遍歷”來保存對象狀態。可想而知,不但慢而且可能溢出。這時候你就要提供自己的readObject,來代替默認的行為。

          note: http://developer.51cto.com/art/200601/20017.htm

          posted on 2006-12-16 04:11 SmileFace 閱讀(282) 評論(0)  編輯  收藏 所屬分類: Java-Studying

          <2006年12月>
          262728293012
          3456789
          10111213141516
          17181920212223
          24252627282930
          31123456

          常用鏈接

          留言簿(2)

          隨筆分類

          隨筆檔案

          文章檔案

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 神农架林区| 万盛区| 长顺县| 睢宁县| 林州市| 平遥县| 台州市| 酒泉市| 杨浦区| 吴堡县| 宁晋县| 利辛县| 沾化县| 长泰县| 平南县| 社旗县| 浦北县| 临邑县| 慈溪市| 巴彦淖尔市| 穆棱市| 呼伦贝尔市| 农安县| 左云县| 乌鲁木齐市| 垣曲县| 玉溪市| 许昌市| 收藏| 冷水江市| 庆元县| 荥经县| 苏尼特左旗| 九龙坡区| 宁德市| 两当县| 响水县| 德化县| 衡阳市| 桂东县| 拉萨市|