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

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

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

    posts - 403, comments - 310, trackbacks - 0, articles - 7
      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理

    Java泛型中的? super T語法

    Posted on 2007-08-15 15:51 ZelluX 閱讀(6560) 評論(0)  編輯  收藏 所屬分類: OOP

    ? super T 語法將泛型類限制為所有T的超類(包括T自身),但只能用于參數中,不可以在返回值用加以限定。
    如果不加以限定,假設某個函數頭為
    ? super Manager get()
    由于編譯器不知道該方法究竟會返回什么類,這樣就只能用Object類來接收了。

    該語法常用的一個情況是泛型類的比較
    java.util.TreeSet<E> 代表一個有序的元素為E的樹,它其中的一個構造器需要一個Comparator類來比較兩個元素,以E為String類時為例,此時的Comparator可以是Comparator<String>,也可以是Comparator<Object>,但Comparator<Integer>就不行,如何表示這樣的限制呢?
    jdk源代碼中是這樣的:
    public TreeSet(Comparator<? super E> c)
    這樣就保證了傳給構造器的Comparator是可以進行E元素的比較的。

    另一個例子,java.util.Collections的max方法用于獲得一個容器中的最大值,這個函數頭可以這樣寫:
    public static <T extends Comparable<T>>  T max(Collection<T> coll)

    這樣就限定T為能和自己比較的類,過于嚴格,jdk源碼是這樣的:
    public static <extends Object & Comparable<? super T>> T max(Collection<? extends T> coll) {
        Iterator
    <? extends T> i = coll.iterator();
        T candidate 
    = i.next();

        
    while(i.hasNext()) {
        T next 
    = i.next();
        
    if (next.compareTo(candidate) > 0)
            candidate 
    = next;
        }

        
    return candidate;
    }

    很嚴謹的函數頭,但是限定方面比較寬

    主站蜘蛛池模板: 性短视频在线观看免费不卡流畅 | 精品女同一区二区三区免费站| 亚洲黄色在线观看| 天天摸天天操免费播放小视频| 日韩在线视频免费 | 国产人成网在线播放VA免费| 久久综合亚洲色HEZYO社区| 最好免费观看韩国+日本| 91视频免费观看高清观看完整| 亚洲手机中文字幕| 国产午夜亚洲不卡| 在线免费观看毛片网站| 暖暖免费在线中文日本| 欧洲亚洲综合一区二区三区| 无码乱人伦一区二区亚洲| 四虎永久免费观看| 波多野结衣在线免费视频| 国产99视频精品免费视频76| 最新亚洲精品国偷自产在线| 久久久久久亚洲精品| 亚洲成A∨人片天堂网无码| 黄页网站免费观看| 久久免费福利视频| 亚洲精品偷拍视频免费观看| 亚洲日本va在线观看| 亚洲成在人线av| 亚洲日本在线观看视频| 在线观看免费为成年视频| 6080午夜一级毛片免费看6080夜福利| 日韩免费高清一级毛片| 亚洲日韩国产欧美一区二区三区| 亚洲av无码专区国产乱码在线观看 | 亚洲婷婷国产精品电影人久久| 国产va精品免费观看| 久久青草免费91线频观看站街| 七次郎成人免费线路视频| 亚洲乱妇老熟女爽到高潮的片 | 国产精品亚洲二区在线| 亚洲已满18点击进入在线观看| 亚洲成人动漫在线| 亚洲国产精品无码专区在线观看|