qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請(qǐng)?jiān)L問 http://qaseven.github.io/

          Java泛型的基本應(yīng)用

          一、泛型概述
            jdk1.5版本以后出現(xiàn)的新特性,用于解決安全問題,是一個(gè)安全機(jī)制。
            好處:
            1,將運(yùn)行時(shí)期的問題ClassCastException轉(zhuǎn)到了編譯時(shí)期。
            2,避免了強(qiáng)制轉(zhuǎn)換的麻煩。
            什么時(shí)候用:
            當(dāng)操作的引用數(shù)據(jù)類型不確定的時(shí)候。就使用泛型(<>)。將要操作的引用數(shù)據(jù)類型傳入即可,其實(shí)<>就是一個(gè)用于接收具體引用數(shù)據(jù)類型的參數(shù)范圍。
            在程序中,只要用到了帶有<>的類或者接口,就要明確傳入的具體引用數(shù)據(jù)類型。
            泛型技術(shù)是給編譯器使用的技術(shù),用于編譯時(shí)期。確保了類型的安全。
            運(yùn)行時(shí),會(huì)將泛型去掉,生成的class文件中是不帶泛型的,這個(gè)稱為泛型的擦除。
            泛型的通配符:未知類型。
            二、泛型的使用
          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、優(yōu)點(diǎn)
            便于對(duì)任何未知的的數(shù)據(jù)類型進(jìn)行操作,特別適合用作工具類,避免了強(qiáng)制類型轉(zhuǎn)換的麻煩。
            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;
          }
          }
            四、泛型方法
            當(dāng)只需要某一個(gè)方法可以接收不同類型的參數(shù),而不是整個(gè)類的時(shí)候,就可以用到泛型方法,它將大大提高程序代碼的擴(kuò)展性。
            示例代碼如下:
          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);
          }
          }
            五、靜態(tài)泛型方法
            1、格式
            public static <T> methodName(T param)
            {
            }
            2、特點(diǎn)
            由于靜態(tài)方法不可以訪問類中的泛型,如果靜態(tài)方法操作的類型不確定,這可以把泛型定義在靜態(tài)方法上。
            3、示例
            publicstatic <Q> void print(Q q)
            {
            System.out.println(q);
            }
            六、泛型接口
            1、格式
            interface Inter<T>
            {
            void show(T t);
            }
            2、特點(diǎn)
            當(dāng)接口要操作的數(shù)據(jù)類型不確定的時(shí)候,就可以使用泛型接口。
            注意:
            當(dāng)實(shí)現(xiàn)接口的類已經(jīng)確定了接口具體的類型時(shí),創(chuàng)建對(duì)象時(shí)就不用再指明類型了,如:
            class InterImpl implements Inter<String>
            {
            }
            如果實(shí)現(xiàn)類仍不知道具體的類型,就要?jiǎng)?chuàng)建對(duì)象時(shí)指明,如:
            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的子類型對(duì)象。上限
            一般存儲(chǔ)對(duì)象的時(shí)候用。比如添加元素 addAll.
            八、泛型super限定
            super E:接收E類型或者E的父類型對(duì)象。下限。
            一般取出對(duì)象的時(shí)候用。比如比較器。

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

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

          導(dǎo)航

          統(tǒng)計(jì)

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評(píng)論

          閱讀排行榜

          評(píng)論排行榜

          主站蜘蛛池模板: 阿拉善右旗| 和政县| 微博| 华亭县| 大竹县| 神农架林区| 合川市| 泗阳县| 疏勒县| 栖霞市| 松潘县| 榆社县| 井冈山市| 米泉市| 林口县| 嘉鱼县| 松潘县| 红河县| 韩城市| 阿勒泰市| 启东市| 南京市| 滨海县| 涞源县| 元谋县| 阿勒泰市| 定安县| 扶绥县| 十堰市| 建昌县| 八宿县| 芒康县| 邢台市| 沾益县| 和林格尔县| 沧州市| 平凉市| 湖口县| 阆中市| 乌海市| 嘉善县|