<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 閱讀(1700) 評論(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,類名已經顯示了它們的用途,不再細說。這個包完整的類圖如下:
     

    主站蜘蛛池模板: 成人片黄网站A毛片免费| 精品国产免费人成电影在线观看| 免费涩涩在线视频网| 亚洲色偷偷av男人的天堂| 久久免费公开视频| 亚洲成av人在线视| 国产成人精品无码免费看| 亚洲国产精品自在在线观看| 久久久久国产免费| 亚洲视频在线免费看| 久久精品a一国产成人免费网站| 亚洲免费视频播放| 好大好硬好爽免费视频| 久久亚洲精品成人无码| 国产高清视频在线免费观看| 亚洲av日韩专区在线观看| 亚洲国产精品日韩| 毛片a级三毛片免费播放| 亚洲国产综合精品中文第一| 在线成人a毛片免费播放 | 免费成人午夜视频| 高h视频在线免费观看| 最近免费中文字幕大全免费| 精品日韩亚洲AV无码一区二区三区| 最近2019免费中文字幕视频三| 亚洲欧洲日本精品| 国产免费人成在线视频| a视频免费在线观看| 亚洲AV无码乱码在线观看| 三上悠亚电影全集免费| 亚洲黄网在线观看| 免费无码又爽又高潮视频| www.av在线免费观看| 777亚洲精品乱码久久久久久 | 91亚洲视频在线观看| 国产黄色片在线免费观看| 国产啪精品视频网站免费尤物| 亚洲男女一区二区三区| 日韩亚洲国产综合久久久| 亚洲毛片基地4455ww| 亚洲精品无码av天堂|