java 泛型是java SE 1.5的新特性,泛型的本質是參數化類型,也就是說所操做的數據類型被指定爲一個參數。這種參數類型能夠用在類、接口和方法的建立中,分別稱爲泛型類、泛型接口、泛型方法。 java
泛型的好處
程序員
java 語言中引入泛型是一個較大的功能加強。不只語言、類型系統和編譯器有了較大的變化,以支持泛型,並且類庫也進行了大翻修,因此許多重要的類,好比集合框架,都已經成爲泛型化的了。安全
這帶來了不少好處:
1,類型安全。 泛型的主要目標是提升 Java 程序的類型安全。經過知道使用泛型定義的變量的類型限制,編譯器能夠在一個高得多的程度上驗證類型假設。沒有泛型,這些假設就只存在於程序員的頭腦中(或者若是幸運的話,還存在於代碼註釋中)。框架
2,消除強制類型轉換。 泛型的一個附帶好處是,消除源代碼中的許多強制類型轉換。這使得代碼更加可讀,而且減小了出錯機會。性能
3,潛在的性能收益。 泛型爲較大的優化帶來可能。在泛型的初始實現中,編譯器將強制類型轉換(沒有泛型的話,程序員會指定這些強制類型轉換)插入生成的字節碼中。可是更多類型信息可用於編譯器這一事實,爲將來版本的 JVM 的優化帶來可能。因爲泛型的實現方式,支持泛型(幾乎)不須要 JVM 或類文件更改。全部工做都在編譯器中完成,編譯器生成相似於沒有泛型(和強制類型轉換)時所寫的代碼,只是更能確保類型安全而已。優化
泛型在使用中還有一些規則和限制:
一、泛型的類型參數只能是類類型(包括自定義類),不能是簡單類型。
二、同一種泛型能夠對應多個版本(由於參數類型是不肯定的),不一樣版本的泛型類實例是不兼容的。
三、泛型的類型參數能夠有多個。
四、泛型的參數類型可使用extends語句,例如<T extends superclass>。習慣上成爲「有界類型」。
五、泛型的參數類型還能夠是通配符類型。例如Class<?> classType = Class.forName(Java.lang.String);
泛 型還有接口、方法等等,內容不少,須要花費一番功夫才能理解掌握並熟練應用。在此給出我曾經瞭解泛型時候寫出的兩個例子(根據看的印象寫的),實現一樣的 功能,一個使用了泛型,一個沒有使用,經過對比,能夠很快學會泛型的應用,學會這個基本上學會了泛型70%的內容。spa
四、多了一種 抽象層次code
// 只能計算3+2 public int add(){ return 3+2; } //能夠計算任意兩個int的和 public int add(int x,int y){ return x+y; } //能夠計算兩個int的和,也能夠計算其餘任意兩個類型的相加 public <T> T add(T x,T y){ return null; }
抽象實際上是根據一些共同特性來對事物進行分類,根據不一樣的分類層次能夠作不一樣的事情。orm
抽象的好處見上面的代碼,接口