posts - 262,  comments - 221,  trackbacks - 0
          在Informa的impl.basic包內(nèi),有一個特殊的類:IdGenerator。它負(fù)責(zé)為其他所有需要標(biāo)識的對象提供一個全局唯一ID。這個類本身的實(shí)現(xiàn)很簡單,全部代碼如下
          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生成類采用了系統(tǒng)當(dāng)前時間作為隨即數(shù)產(chǎn)生的種子,這個并不難理解。但是有一個地方需要我們注意的就是關(guān)鍵字transient的使用。這個關(guān)鍵的作用是告訴編譯器假設(shè)該類的對象被序列化了,這個值不需要被保存。因?yàn)樗?#8220;瞬時”的。

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

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


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

          常用鏈接

          留言簿(21)

          隨筆分類

          隨筆檔案

          BlogJava熱點(diǎn)博客

          好友博客

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 漯河市| 青阳县| 昌黎县| 喀什市| 葵青区| 喜德县| 大同市| 余干县| 图木舒克市| 重庆市| 和顺县| 如东县| 土默特右旗| 泰安市| 江永县| 滦平县| 类乌齐县| 思茅市| 长岛县| 隆林| 贵港市| 儋州市| 九台市| 库车县| 永春县| 濉溪县| 宜君县| 甘南县| 南华县| 平顺县| 宁陵县| 定安县| 鲁甸县| 奎屯市| 阜宁县| 徐汇区| 邹城市| 增城市| 泰安市| 绥芬河市| 绥棱县|