最愛Java

          書山有路勤為徑,學海無涯苦作舟

          org.apache.commons.lang.enums學習筆記

              在org.apache.commons.lang.enums包中只有3個類,主要是實現了枚舉類的操作。
              Enum - 用于實現枚舉;
              EnumUtils - 用于簡化枚舉類的操作;
              ValuedEnum - 另一種帶有int值的枚舉類型,主要用于switch語句。
              雖然JDK 1.5以上已經自帶了Enums類型,但這兩者還是有些區別的:標準的Enums是一個內置的數據類型,不是一個超類;因為不是一個超類,所以不能繼承,也沒有Lang包中Enum類的方法;Lang包中的enum名字可以通過getName()獲得,而標準的Enums則只返回其類的名字。當然,Apache組織還是希望沒必要的情況下,不要使用Lang包下的Enum類,因為Enum類是單獨實現枚舉用途的,和標準的Enums沒有任何關系,所以兩者之間將無法轉換。
              Enum類和ValuedEnum類的使用方法很簡單,在APIDOC中有詳細的例子。就不再這里重復了。但需要說一下EnumUtils這個類,這個類個人認為在jdk 1.5以后是一個無效類。我們看下面的例子:

          package test.org.apache.commons.lang.enums;

          import java.util.Iterator;
          import java.util.List;

          import org.apache.commons.lang.enums.EnumUtils;

          public class EnumsTest {
              
          public static void main(String[] args) {
                  System.out.println(
          "start");
                  Iterator it 
          = EnumUtils.iterator(StudentEnum.class);
                  
          while (it.hasNext()) {
                      System.out.println(it.next());
                  }

                  
                  it 
          = StudentEnum.iterator();
                  
          while (it.hasNext()) {
                      System.out.println(it.next());
                  }

                  
                  it 
          = EnumUtils.iterator(StudentEnum.class);
                  
          while (it.hasNext()) {
                      System.out.println(it.next());
                  }
                  
                  System.out.println(
          "end");
              }

          }


              從設計角度,應該打印出三遍StudentEnum中的數據,但實際上只打印出了兩遍。第一次調用EnumUtils.iterator()方法的時候,返回的是空Iterator。這主要是jdk 1.5以后類的加載機制發生了變化,也就是static字段的加載時機改變了。在例子中,到StudentEnum.iterator()語句時,StudentEnum類才被加載,StudentEnum的static字段才被初始化。而EnumUtils所有方法都是訪問static字段的,所以在被訪問的類沒有實際加載之前,是訪問不到任何數據的。這個問題在Apache的論壇上已經被提及。

          posted on 2009-01-05 14:00 Brian 閱讀(1381) 評論(0)  編輯  收藏 所屬分類: Jakarta Commons筆記

          公告


          導航

          <2009年1月>
          28293031123
          45678910
          11121314151617
          18192021222324
          25262728293031
          1234567

          統計

          常用鏈接

          留言簿(4)

          隨筆分類

          隨筆檔案

          收藏夾

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 定襄县| 琼结县| 星子县| 香格里拉县| 厦门市| 库尔勒市| 焉耆| 班戈县| 广宗县| 十堰市| 桐梓县| 博乐市| 波密县| 车险| 华亭县| 奎屯市| 忻城县| 高台县| 陆丰市| 蛟河市| 无极县| 水富县| 江西省| 仙桃市| 白山市| 锦屏县| 星子县| 石嘴山市| 莱州市| 灵武市| 文成县| 昌都县| 白城市| 阳谷县| 澎湖县| 抚松县| 锦州市| 成武县| 彭泽县| 虎林市| 阿拉善右旗|