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熱點博客

          好友博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 清水河县| 宁津县| 当涂县| 毕节市| 监利县| 达拉特旗| 炉霍县| 隆林| 清原| 南汇区| 上思县| 安化县| 潮州市| 平南县| 祁东县| 云梦县| 莱西市| 兴隆县| 堆龙德庆县| 济宁市| 双峰县| 江山市| 陵水| 乌苏市| 梁平县| 泰和县| 图木舒克市| 武定县| 上栗县| 通渭县| 葫芦岛市| 石林| 高邮市| 湖南省| 称多县| 桦川县| 甘孜县| 大城县| 集安市| 高安市| 奉贤区|