qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          Java泛型的基本應用

          一、泛型概述
            jdk1.5版本以后出現的新特性,用于解決安全問題,是一個安全機制。
            好處:
            1,將運行時期的問題ClassCastException轉到了編譯時期。
            2,避免了強制轉換的麻煩。
            什么時候用:
            當操作的引用數據類型不確定的時候。就使用泛型(<>)。將要操作的引用數據類型傳入即可,其實<>就是一個用于接收具體引用數據類型的參數范圍。
            在程序中,只要用到了帶有<>的類或者接口,就要明確傳入的具體引用數據類型。
            泛型技術是給編譯器使用的技術,用于編譯時期。確保了類型的安全。
            運行時,會將泛型去掉,生成的class文件中是不帶泛型的,這個稱為泛型的擦除。
            泛型的通配符:未知類型。
            二、泛型的使用
          import java.util.*;
          publicclass GenericDefineDemo4
          {
          publicstaticvoid main(String[] args)
          {
          ArrayList<String> arr=new ArrayList<String>();
          arr.add("java01");
          arr.add("java02");
          arr.add("java03");
          arr.add("java04");
          Iterator<String> it=arr.iterator();
          while(it.hasNext())
          {
          System.out.println(it.next());
          }
          }
          }
           三、泛型類
            1、格式
            class ClassName<datatype>
            {
            }
            2、優點
            便于對任何未知的的數據類型進行操作,特別適合用作工具類,避免了強制類型轉換的麻煩。
            3.示例
          import java.util.*;
          publicclass GenericClass
          {
          publicstaticvoid main(String[] args)
          {
          Tools<String> tools=new Tools<String>("hello");
          System.out.println(tools.getObj());
          }
          }
          class Tools<T>
          {
          private T obj;
          public Tools(T t)
          {
          this.obj=t;
          }
          public T getObj() {
          returnobj;
          }
          publicvoid setObj(T obj) {
          this.obj = obj;
          }
          }
            四、泛型方法
            當只需要某一個方法可以接收不同類型的參數,而不是整個類的時候,就可以用到泛型方法,它將大大提高程序代碼的擴展性。
            示例代碼如下:
          import java.util.*;
          publicclass GenericMethod
          {
          publicstaticvoid main(String[] args)
          {
          String s="hello!Nice to meet you!";
          Integer inter=3;
          Show show=new Show();
          show.print(s);
          show.print(inter);
          }
          }
          class  Show
          {
          public  <Q> void print(Q q)
          {
          System.out.println(q);
          }
          }
            五、靜態泛型方法
            1、格式
            public static <T> methodName(T param)
            {
            }
            2、特點
            由于靜態方法不可以訪問類中的泛型,如果靜態方法操作的類型不確定,這可以把泛型定義在靜態方法上。
            3、示例
            publicstatic <Q> void print(Q q)
            {
            System.out.println(q);
            }
            六、泛型接口
            1、格式
            interface Inter<T>
            {
            void show(T t);
            }
            2、特點
            當接口要操作的數據類型不確定的時候,就可以使用泛型接口。
            注意:
            當實現接口的類已經確定了接口具體的類型時,創建對象時就不用再指明類型了,如:
            class InterImpl implements Inter<String>
            {
            }
            如果實現類仍不知道具體的類型,就要創建對象時指明,如:
            class InterImpl<T> implements Inter<T>
            {
            }
            InterImpl<String> im=new InterImpl<String>();
            3、示例
          import java.util.*;
          public class Test
          {
          public static void main(String[] args)
          {
          InterImpl<String> im=new InterImpl<String>();
          im.print("hello");
          }
          }
          interface Inter<T>
          {
          void print(T t);
          }
          class InterImpl<T> implements Inter<T>
          {
          public void print(T s)
          {
          System.out.println(s);
          }
          }
            七、泛型extends限定
            extends E:接收E類型或者E的子類型對象。上限
            一般存儲對象的時候用。比如添加元素 addAll.
            八、泛型super限定
            super E:接收E類型或者E的父類型對象。下限。
            一般取出對象的時候用。比如比較器。

          posted on 2014-03-26 11:11 順其自然EVO 閱讀(275) 評論(0)  編輯  收藏 所屬分類: 測試學習專欄

          <2014年3月>
          2324252627281
          2345678
          9101112131415
          16171819202122
          23242526272829
          303112345

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 丘北县| 东至县| 龙海市| 台江县| 遵化市| 米易县| 海淀区| 基隆市| 榆树市| 海南省| 九龙县| 河间市| 贵溪市| 南通市| 额济纳旗| 福泉市| 商南县| 木里| 天峻县| 松潘县| 南川市| 古田县| 客服| 大新县| 漳浦县| 崇礼县| 宁河县| 资兴市| 白沙| 奉新县| 犍为县| 清新县| 中宁县| 诸暨市| 那坡县| 青神县| 九龙城区| 阳曲县| 兰西县| 灌南县| 临江市|