隨筆 - 4, 文章 - 0, 評論 - 0, 引用 - 0
          數(shù)據(jù)加載中……

          java范型介紹 (轉(zhuǎn)載)

          java范型簡介

          一.簡單認(rèn)識java范型       

                     經(jīng)常聽人說“范型”,我一直不是太明白什么叫“范型”,今天就查閱了一些文章,給我的第一感覺就是之所以在java中用范型,就是為了讓一些錯誤在編譯階段就可以暴露出來,而不用在運(yùn)行階段才拋出異常。下面給出一個簡單例子來說明。

              /** *//**
                * 沒有利用范型的例子
               
          */

              
          public void example1()...{
                   ArrayList array
          =new ArrayList();
                   array.add(
          "this is a string");
                   array.add(
          new Integer(3));//這里可以正確添加
                  
                   Iterator iterator
          =array.iterator();
                  
          while(iterator.hasNext())...{
                       String str
          =(String)iterator.next();//編譯時沒錯,但在運(yùn)行時會拋出ClassCastException異常
                       System.out.println(str);
                   }
              
               }
          運(yùn)行以上程序,會拋出 java.lang.ClassCastException異常,而該異常是在程序運(yùn)行過程中才會發(fā)現(xiàn)的,如果我們利用了范型,則在編譯階段就會發(fā)現(xiàn)異常,從而保證類型轉(zhuǎn)換安全。如下面程序:
              public void example2()...{
                   ArrayList
          <String> array=new ArrayList<String>();
                   array.add(
          "this is a string");
                  
          //array.add(new Integer(3));//編譯時會報異常:The method add(String) in the type ArrayList<String> is not applicable for the arguments(Integer)
                  
                   Iterator
          <String> iterator=array.iterator();
                  
          while(iterator.hasNext())...{
                       String str
          =iterator.next();//這里就不需要進(jìn)行強(qiáng)制類型轉(zhuǎn)換
                       System.out.println(str);
                   }
              
               }

          這樣,我們在編譯階段就可以捕獲可能存在地危險。

          通過以上簡單例子,我們可以看出,使用java范型的好處有:

          1. 內(nèi)在的類型轉(zhuǎn)換優(yōu)于在外部的人工轉(zhuǎn)換
          2. 類型的匹配問題在編譯階段就可以發(fā)現(xiàn),而不用在運(yùn)行階段

          二.創(chuàng)建自己的范型

          任何類,接口,異常,方法都可以使用范型,下面是個簡單的例子,使用范型來比較兩個對象的大小,兩個對象必須都實現(xiàn)了Comparable接口。

              public <T extends Comparable> T max(T t1, T t2) ...{
                   
          if(t1.compareTo(t2) <= 0) ...{
                      
          return t2;
                   }
          else ...{
                      
          return t1;
                   }

               }

          posted on 2007-08-30 17:55 心月狐 閱讀(249) 評論(0)  編輯  收藏 所屬分類: java


          只有注冊用戶登錄后才能發(fā)表評論。


          網(wǎng)站導(dǎo)航:
           
          主站蜘蛛池模板: 佛学| 九龙县| 班玛县| 江华| 昭觉县| 太仓市| 长白| 康保县| 漳浦县| 保康县| 云梦县| 鹤山市| 周口市| 东明县| 平塘县| 鄂州市| 南召县| 梨树县| 泗洪县| 米泉市| 安岳县| 常山县| 奈曼旗| 三江| 海南省| 黄浦区| 新巴尔虎左旗| 焦作市| 囊谦县| 即墨市| 镇康县| 吉林省| 佛山市| 合阳县| 大石桥市| 南漳县| 夏邑县| 易门县| 屯昌县| 岐山县| 井研县|