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

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

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

    莊周夢(mèng)蝶

    生活、程序、未來(lái)
       :: 首頁(yè) ::  ::  :: 聚合  :: 管理

    org.springframework.core.enums類(lèi)圖

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

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

    然后就可以這樣聲明枚舉類(lèi)型了:

    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";
                }
            };

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

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

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

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

    }

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

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

    主站蜘蛛池模板: 1000部拍拍拍18勿入免费视频下载| 中文在线免费视频| 99re热免费精品视频观看| 亚洲av无码成人黄网站在线观看| 手机看片国产免费永久| 亚洲尤码不卡AV麻豆| 国产在线播放线91免费| 亚洲成AV人片在WWW色猫咪 | 丁香五月亚洲综合深深爱| fc2免费人成为视频| 亚洲老熟女@TubeumTV| 97公开免费视频| 亚洲福利电影在线观看| 国产日本一线在线观看免费| 亚洲а∨天堂久久精品9966| 午夜爱爱免费视频| 九一在线完整视频免费观看| 国产日产亚洲系列| 777爽死你无码免费看一二区| 亚洲乱人伦精品图片| 午夜爱爱免费视频| 成人av片无码免费天天看| 亚洲AV无码精品色午夜在线观看| 91热成人精品国产免费| 无码亚洲成a人在线观看| 久久激情亚洲精品无码?V| 99久久精品国产免费| 亚洲日韩国产AV无码无码精品| 一区二区三区亚洲视频| 久久精品国产免费| 亚洲一卡2卡3卡4卡乱码 在线| 四虎永久在线精品免费观看地址| 亚洲国产成人99精品激情在线| 麻豆国产入口在线观看免费| 一区二区3区免费视频| 亚洲精品在线播放| va亚洲va日韩不卡在线观看| 少妇无码一区二区三区免费| 亚洲无删减国产精品一区| 四虎免费在线观看| 免费福利在线视频|