<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)圖如下:
     

    主站蜘蛛池模板: 曰批全过程免费视频在线观看无码 | 午夜高清免费在线观看| 亚洲欧洲无码AV不卡在线| 青青青国产色视频在线观看国产亚洲欧洲国产综合| 特a级免费高清黄色片| 亚洲精品视频在线| 免费看片A级毛片免费看| 国产高清视频免费在线观看| 亚洲国产精品综合福利专区| 国产免费av一区二区三区| 久久免费高清视频| 亚洲AV无码AV日韩AV网站| 国产亚洲免费的视频看| 美女被免费视频网站a国产| 国产免费无码一区二区| 亚洲人成色99999在线观看| 亚洲午夜久久久影院| 大陆一级毛片免费视频观看i| 国产成人无码免费看片软件 | 久久久久亚洲AV无码专区首JN| 国产极品粉嫩泬免费观看| 少妇人妻偷人精品免费视频| 一级片在线免费看| 亚洲人成激情在线播放| 久久精品九九亚洲精品天堂| 国产免费观看a大片的网站| 亚洲一区二区三区免费观看| 精品免费久久久久国产一区 | 中国china体内裑精亚洲日本| 好看的电影网站亚洲一区| 国产又黄又爽又猛的免费视频播放 | 日日夜夜精品免费视频| 37pao成人国产永久免费视频| 国产成人无码免费网站| 美女视频黄频a免费| 亚洲最大av资源站无码av网址| 亚洲五月六月丁香激情| 亚洲欧洲精品无码AV| 亚洲?V乱码久久精品蜜桃 | 亚洲精品无码一区二区| 亚洲无圣光一区二区|