J2EE社區(qū)

          茍有恒,何必三更起五更眠;
          最無(wú)益,只怕一日曝十日寒.
          posts - 241, comments - 318, trackbacks - 0, articles - 16

          導(dǎo)航

          留言簿(30)

          隨筆分類(lèi)(219)

          友情鏈接

          搜索

          •  

          積分與排名

          • 積分 - 1167568
          • 排名 - 25

          最新隨筆

          最新評(píng)論

          閱讀排行榜

          六、java1.5以上新特性-范型

          Posted on 2011-06-05 16:51 xcp 閱讀(312) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): review
          1。由來(lái)
              ByteFoo->private Byte foo;
              StringFoo->private String foo;
              BooleanFoo->private boolean foo;
              DateFoo->private Date foo;
              XcpFoo->private xcp foo;

          2。1.4以前的解決方案
              ObjectFoo->private Object foo;  //容易出現(xiàn)ClassCastException,類(lèi)型轉(zhuǎn)換錯(cuò)誤

          3。1.5新特性的解決方案-范型
              public Class MyFoo<T>{
                  private T foo;
              }

          4。擴(kuò)展
              public Class MyFoo<T>{
                  private T[] foos; //等等
              }

          5.再度擴(kuò)展-限制范型使用類(lèi)型
              public Class MyFoo<T extends List>{ //不管是繼承父類(lèi)與實(shí)現(xiàn)接口都用extends
                  private T foo;
              }


          6.再度擴(kuò)展-類(lèi)型通配聲明-->使用時(shí)的通用方法
               public Class MyFoo<T extends List>{
                  private T foo;
                  public static void main(String args[]){
                      MyFoo<ArrayList> foo1 = new MyFoo<ArrayList>();
                      MyFoo<LinkedList> foo2 = new MyFoo<LinkedList>();
                      
                      //現(xiàn)在我想聲明一個(gè)變量,即可以放ArrayList,也可以放LinkedList
                      MyFoo<? extends List> foo3 =null;  //list的子類(lèi)
                      foo3 = new MyFoo<ArrayList>();
                      foo3 = new MyFoo<LinkedList();

                      
                      MyFoo<? super List> foo4 =null; //list的父類(lèi)
                      foo4 = new MyFoo<Object>();   //這就只能為Object了,因?yàn)長(zhǎng)ist的超父類(lèi)有Object
                  
                      MyFoo<?>  foo5 = null;    //任意類(lèi)型== ? extends Object
                      foo5 = new MyFoo<Integer>();
                      foo5 = new MyFoo<String>();
                }
              }
              



          名稱(chēng): ?4C.ESL | .↗Evon
          口號(hào): 遇到新問(wèn)題?先要尋找一個(gè)方案乄而不是創(chuàng)造一個(gè)方案こ
          mail: 聯(lián)系我


          主站蜘蛛池模板: 昌图县| 银川市| 乳源| 肥城市| 临武县| 恩施市| 花莲县| 灌云县| 宣恩县| 瑞丽市| 长寿区| 砚山县| 黄平县| 和静县| 云霄县| 新乡市| 德庆县| 五莲县| 廊坊市| 松桃| 泸溪县| 乐平市| 二连浩特市| 高青县| 射阳县| 尉犁县| 大丰市| 永胜县| 汾西县| 长寿区| 阿瓦提县| 咸阳市| 临海市| 东乡族自治县| 阳江市| 屏山县| 夹江县| 灵山县| 共和县| 蒙自县| 色达县|