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

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

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

    posts - 195, comments - 34, trackbacks - 0, articles - 1

    java泛型學(xué)習(xí)筆記

    Posted on 2009-08-15 16:15 小強(qiáng)摩羯座 閱讀(263) 評(píng)論(0)  編輯  收藏 所屬分類: Java


    generic points to List<String> , List is called raw type here, and <String> is the parametered type.

    Generic's functions are :
    1. remove type cast;
    2. typesafe programming;

    The key question of Generic:
    1. the inheritance attribute of OO is not support: List<String> is not a type of List<Object>。

    2. Collection<?> c: the parametered type is unknown. so you cant add elem into c.but you may get the elem in c and we know they are of type Object.

    3、類型推斷

    static  < T >   void  fromArrayToCollection(T[] a, Collection  <  T  >  c)   

       
    for  (T o : a)   
             c.add(o);  
    //  correct  
          }
     
     }

      對(duì)這個(gè)方法參數(shù)化類型T,由定義數(shù)據(jù)a和Collection時(shí)傳入的共同決定,它們可以使用相同類型,也可以使用不同類型,當(dāng)類型不同時(shí),它們必須有繼承關(guān)系,類型推斷時(shí)使用較高的那個(gè)。
    4, when to use <?> or <T> :他們主要用在泛型方法,T相比?,它有名稱,可多次使用來表達(dá)依賴關(guān)系。所以在不表達(dá)依賴關(guān)系的地方就應(yīng)該使用?。它簡(jiǎn)單、靈活。

    而且有趣的是,它們并非水火不容,反而可以精妙配合,如下:  

     

    1  class Collections 
    2
    3  public static < T > void copy(List < T > dest, List < ? extends T > src) {  } 
    4
    5}
     

     

    這個(gè)合作使得dest src 的依賴關(guān)系得以表達(dá),同時(shí)讓 src 的接納范疇擴(kuò)大了。假如我們只用泛型方法來實(shí)現(xiàn):  

     

    1  class Collections 
    2
    3   public static < T, S extends T > void copy(List < T > dest, List < S > src) {  } 
    4
    5}
     

     

    那么S 的存在就顯得有些不必要,有些不優(yōu)雅。總的來說,通配符更簡(jiǎn)潔清晰,只要情況允許就應(yīng)該首選。

    5、由于普通數(shù)組是協(xié)變的,而GenricType由于List<String>不是List<Object>的子類型,所以它不能協(xié)變。可以使用?來new 一個(gè)數(shù)組。但是通常new完就要加元素,而?類型未知不可以產(chǎn)生對(duì)象的。所以最后使用Class<T> 類型做形參,實(shí)參用T.class就可以。這就是為什么Hibernate.load和get中會(huì)使用的.class的用法。比較新知識(shí)點(diǎn)是String.class就是Class<String>(String.class稱字面類常量)。當(dāng)傳入Class<T> c 對(duì)象后,可以利用reflect來構(gòu)造對(duì)象,并作狀態(tài)設(shè)置。




    主站蜘蛛池模板: 亚洲精品理论电影在线观看| 一二三四免费观看在线电影| 亚洲精品成a人在线观看☆| 亚洲色爱图小说专区| 国产无遮挡又黄又爽免费视频| 一区二区三区观看免费中文视频在线播放 | 久久综合AV免费观看| 免费日本一区二区| a毛片成人免费全部播放| 亚洲第一综合天堂另类专| 亚洲国产一区在线观看| 久久亚洲精品无码| 亚洲色精品aⅴ一区区三区| 免费一级国产生活片| 免费看AV毛片一区二区三区| 黄色永久免费网站| 曰批全过程免费视频播放网站| 成在人线av无码免费高潮喷水| 国产精品免费一区二区三区| 日韩少妇内射免费播放| 爱情岛亚洲论坛在线观看 | 无码免费午夜福利片在线| 亚洲a一级免费视频| 免费91麻豆精品国产自产在线观看| 九九综合VA免费看| 人妖系列免费网站观看| 国产精品亚洲一区二区三区 | 在线a亚洲v天堂网2018| 国产美女被遭强高潮免费网站 | 黄页网址大全免费观看12网站| 亚洲爆乳无码专区www| 亚洲av无码兔费综合| 亚洲第一成年网站视频 | 日韩免费视频播放| 午夜爱爱免费视频| 好爽好紧好大的免费视频国产| 热99re久久精品精品免费| 日本v片免费一区二区三区| 免费萌白酱国产一区二区| 亚洲国产精品激情在线观看| 四虎亚洲国产成人久久精品|