二十四、JDK1.5新特性---泛型

        由於本人認知有限,泛型在使用上沒有太大壓力,但是尚未具備詳細介紹泛型的能力,因此本文只是粗略的描述泛型的相關知識,在以後的學習過程中會對這篇文章進行修改,希望這篇文章不會給讀者帶來迷惑,特此聲明

什麼是泛型?

     泛型(Generic type 或者 generics)是對 Java 語言的類型系統的一種擴展,以支持創建可以按類型進行參數化的類。可以把類型參數看作是使用參數化類型時指定的類型的一個佔位符,就像方法的形式參數是運行時傳遞的值的佔位符一樣。

        泛型是提供給javac編譯器使用的,可以限定集合中的輸入類型,讓編譯器擋住源程序中的非法輸入。

爲什麼要使用泛型

    在使用泛型之前,將存入集合中的元素可以是任意數據類型,當從集合中取出元素時,所以元素的類型都是Object類型,需要對元素進行向下強制轉型,轉換到特定的類型。比如:

        List myIntList = new LinkedList(); // 1

        myIntList.add(new Integer(0)); // 2

        Integer x = (Integer) myIntList.iterator().next(); // 3

第三行的這個強制類型轉換可能會引起運行時的錯誤。

泛型的思想就是由程序員指定類型,這樣集合就只能容納該類型的元素

使用泛型:

        List<Integer> myIntList = new LinkedList<Integer>(); // 1'

        myIntList.add(new Integer(0)); // 2'

        Integer x = myIntList.iterator().next(); // 3'

將第三行的強制類型轉換變爲了第一行的List類型說明,編譯器會爲我們檢查類型的正確性。這樣,代碼的可讀性和健壯性也會增強。

泛型的好處

    1 類型安全:泛型的主要目標是提高java程序的類型安全,泛型定義的變量類型會受到限制,編譯器可以在一個高得多的成都上進行驗證類型的假設。沒有泛型這些假設只能存在於程序員的頭腦中。

    2 消除強制類型轉換:泛型的一個附帶的好處是,消除源代碼中的許多強制類型的轉化,這使得代碼更加可讀,減少出錯的概率

    簡而言之:泛型的出現,第一可以將運行時的錯誤提前到了編譯時期,第二 減少了類型轉化,簡化了代碼提高了閱讀性。

泛型使用原則

     1、泛型的類型參數只能是類類型(包括自定義類),不能是簡單類型。

        2、同一種泛型可以對應多個版本(因爲參數類型是不確定的),不同版本的泛型類實例是不兼容的。

        3、泛型的類型參數可以有多個。

        4、泛型的參數類型可以使用extends語句,例如<T extends superclass>。習慣上成爲"有界類型"。

        5、泛型的參數類型還可以是通配符類型。例如Class<?> classType = Class.forName(Java.lang.String);

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章