posts - 262,  comments - 221,  trackbacks - 0
          在Informa的impl.basic包內,有一個特殊的類:IdGenerator。它負責為其他所有需要標識的對象提供一個全局唯一ID。這個類本身的實現很簡單,全部代碼如下
          import java.util.Random;

          /**
           * Identity generator implemented as singleton for generating positive
           * random integers to be used as identify uniquely news channels,
           * items.
           *
           * 
          @author Niko Schmuck (niko@nava.de)
           
          */

          import de.nava.informa.core.IdGeneratorIF;

          public class IdGenerator implements IdGeneratorIF {

              
          private static IdGenerator instance;
              
          /** used for creating unique item IDs. */
              
          private static transient Random rand;

              
          private IdGenerator() {
                  rand 
          = new Random(System.currentTimeMillis());
              }


              
          public static IdGenerator getInstance() {
                  
          if (instance == null{
                      instance 
          = new IdGenerator();
                  }

                  
          return instance;
              }


              
          public long getId() {
                  
          return 100000l + Math.abs(rand.nextInt());
              }


          }

          這個ID生成類采用了系統當前時間作為隨即數產生的種子,這個并不難理解。但是有一個地方需要我們注意的就是關鍵字transient的使用。這個關鍵的作用是告訴編譯器假設該類的對象被序列化了,這個值不需要被保存。因為它是“瞬時”的。

          這一點和前面我們見到的其它類不同,在impl.basic包下,幾乎90%的類都會有這樣類似的一句話
          private static final long serialVersionUID = -8346101720187629760L;

          為什么要加這句話呢?這是因為當我們序列化對象后,對象所屬的類仍然可能被改變(例如增加,刪除了一個變量),如果我們先序列化后再反序列化會發現編譯器報錯。此時我們需要加上這個“序列化版本UID”---就好比類的對象當前狀態的快照一樣。當以后恢復后編譯器會自動反序列化對象,同時加上新的變化。


          -------------------------------------------------------------
          生活就像打牌,不是要抓一手好牌,而是要盡力打好一手爛牌。
          posted on 2009-12-23 00:03 Paul Lin 閱讀(1341) 評論(0)  編輯  收藏 所屬分類: J2SE
          <2009年12月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點博客

          好友博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 滦南县| 孟州市| 上犹县| 龙川县| 喀喇沁旗| 尖扎县| 黎川县| 玉林市| 石嘴山市| 张家界市| 阿克苏市| 个旧市| 宁城县| 五台县| 珲春市| 临沭县| 武宣县| 郴州市| 云和县| 桐庐县| 鲜城| 花莲市| 隆昌县| 武平县| 波密县| 溧水县| 安平县| 扎囊县| 伊春市| 通海县| 吉林省| 新乡市| 新竹市| 咸宁市| 永登县| 武山县| 富锦市| 葫芦岛市| 永兴县| 临武县| 封丘县|