<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    莊周夢蝶

    生活、程序、未來
       :: 首頁 ::  ::  :: 聚合  :: 管理

    org.springframework.core.enums類圖

    Posted on 2007-04-11 15:57 dennis 閱讀(1698) 評論(0)  編輯  收藏 所屬分類: java源碼解讀
        這個包按照說明是:Interfaces and classes for type-safe enum support on JDK >= 1.3。提供類型安全的枚舉類型。代碼也是相當簡單,枚舉類型又分為靜態類型和通用類型。靜態類型其實跟jdk1.5引進的enum類型類似,都是以int類型做code,比如聲明一個Dog類型:
    public static class Dog extends StaticLabeledEnum {

           
    private Dog(int code, String name) {
                
    super(code, name);
            }
        }

    然后就可以這樣聲明枚舉類型了:

    public static final Dog BORDER_COLLIE = new Dog(13"Border Collie");

    public static final Dog WHIPPET = new Dog(14"Whippet");

    public static final Dog GOLDEN_RETRIEVER = new Dog(11null) {
                
    // must set type to be recognized as a "Dog"
                public Class getType() {
                    
    return Dog.class;
                }

                
    public String getLabel() {
                    
    return "Golden Retriever";
                }
            };

    同時有一個靜態枚舉類型的處理類用于提取信息:StaticLabeledEnumResolver ——這個類繼承自抽象類AbstractCachingLabeledEnumResolver,而抽象類實現了接口LabeledEnumResovler,看看這個接口就知道所謂處理類是干什么的了:
    public interface LabeledEnumResolver {

        
    //獲取某個類中聲明的枚舉類型,這些類型   //必須是LabeledEnum的子類
        public Set getLabeledEnumSet(Class type) throws IllegalArgumentException;

        
    public Map getLabeledEnumMap(Class type) throws IllegalArgumentException;
       
        //根據code獲取枚舉
        
    public LabeledEnum getLabeledEnumByCode(Class type, Comparable code) throws IllegalArgumentException;

        //根據lable獲取枚舉
        
    public LabeledEnum getLabeledEnumByLabel(Class type, String label) throws IllegalArgumentException;

    }

    StaticLabeledEnumResolver 使用了單例模式,同時AbstractCachingLabeledEnumResolver定義了一個模板法方法并使用:
    protected abstract Set findLabeledEnums(Class type);
    也是一個Template Method模式應用的例子。

    所謂通用性的枚舉類型,是指不定義成static,并且可以靈活使用其他類型做code的枚舉,比如spring已經內置的3種:ShortCodedLabeledEnum ,StringCodeLabeledEnum和LetterCodeLabeledEnum,這些類都繼承自AbstractLabeledEnum,類名已經顯示了它們的用途,不再細說。這個包完整的類圖如下:
     

    主站蜘蛛池模板: 亚洲av无码不卡久久| 久久狠狠高潮亚洲精品| 黑人粗长大战亚洲女2021国产精品成人免费视频 | 手机在线免费视频| 亚洲AV男人的天堂在线观看| 4虎永免费最新永久免费地址| 亚洲免费闲人蜜桃| 岛国大片免费在线观看| 看亚洲a级一级毛片| 亚洲高清成人一区二区三区| 一二三区免费视频| 亚洲AV无码久久| ww4545四虎永久免费地址| 99999久久久久久亚洲| 免费一级做a爰片久久毛片潮喷| 全部一级一级毛片免费看| 亚洲自偷自偷图片| 99久久人妻精品免费一区| 自拍日韩亚洲一区在线| 哒哒哒免费视频观看在线www| eeuss免费天堂影院| 亚洲视频国产精品| 成在人线AV无码免费| 日韩a毛片免费观看| 亚洲国产精品无码久久久不卡| 精品无码人妻一区二区免费蜜桃 | 精品一区二区三区免费视频| 亚洲va久久久噜噜噜久久男同| av免费不卡国产观看| 黄床大片30分钟免费看| 久久综合日韩亚洲精品色| 成人性生交视频免费观看| 久久WWW免费人成—看片| 亚洲日本视频在线观看| 免费a在线观看播放| 久久久久久影院久久久久免费精品国产小说 | 四虎永久在线免费观看| 成人久久免费网站| 亚洲欧洲无码一区二区三区| 日本亚洲国产一区二区三区| 国产成人免费网站|