隨筆 - 4, 文章 - 0, 評論 - 0, 引用 - 0
          數據加載中……

          java范型介紹 (轉載)

          java范型簡介

          一.簡單認識java范型       

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

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

              
          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();//編譯時沒錯,但在運行時會拋出ClassCastException異常
                       System.out.println(str);
                   }
              
               }
          運行以上程序,會拋出 java.lang.ClassCastException異常,而該異常是在程序運行過程中才會發現的,如果我們利用了范型,則在編譯階段就會發現異常,從而保證類型轉換安全。如下面程序:
              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();//這里就不需要進行強制類型轉換
                       System.out.println(str);
                   }
              
               }

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

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

          1. 內在的類型轉換優于在外部的人工轉換
          2. 類型的匹配問題在編譯階段就可以發現,而不用在運行階段

          二.創建自己的范型

          任何類,接口,異常,方法都可以使用范型,下面是個簡單的例子,使用范型來比較兩個對象的大小,兩個對象必須都實現了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


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


          網站導航:
           
          主站蜘蛛池模板: 谢通门县| 化州市| 射洪县| 土默特左旗| 台前县| 延吉市| 乌恰县| 安庆市| 从化市| 安龙县| 密云县| 天祝| 阳原县| 胶南市| 扶余县| 苗栗县| 蒙城县| 宁海县| 肇州县| 东台市| 政和县| 科技| 瓮安县| 涡阳县| 河曲县| 甘孜| 华蓥市| 杭锦旗| 茶陵县| 阿拉善左旗| 漯河市| 江阴市| 安多县| 翁源县| 化德县| 象山县| 上饶县| 石城县| 大田县| 溧水县| 资溪县|