為什么要用Java泛型


啥是泛型?


泛型(generic)是指參數化類型的能力。可以定義帶泛型類型的類或方法,隨后編譯器會用具體的類型來代替它。

舉個栗子


  上述代碼在編譯期沒有問題,但在運行期,將會報錯。就是因為List的add方法的參數為Object,所以如果在程序員在不知道List類型時,通過強轉獲值,這時就會報錯了。

  使用泛型,將會解決這個問題。

  如上兩個截圖所示,當聲明List所能裝載的類型后,List的add方法就只能裝載指定的類型,不然在編譯期便會報錯。

  而且在獲值時,不再需要強制轉換。

使用泛型的優點


  Java語言引入泛型的好處是安全簡單。泛型的好處是在編譯的時候檢查類型安全,並且所有的強制轉換都是自動和隱式的,提高代碼的重用率。

詳細的說:

  1. 類型安全。 泛型的主要目標是提高 Java 程序的類型安全。通過知道使用泛型定義的變量的類型限制,編譯器可以在一個高得多的程度上驗證類型假設。沒有泛型,這些假設就只存在於程序員的頭腦中(或者如果幸運的話,還存在於代碼注釋中)。
  2. 消除強制類型轉換。泛型的一個附帶好處是,消除源代碼中的許多強制類型轉換。這使得代碼更加可讀,並且減少了出錯機會。
  3. 潛在的性能收益。 泛型為較大的優化帶來可能。在泛型的初始實現中,編譯器將強制類型轉換(沒有泛型的話,程序員會指定這些強制類型轉換)插入生成的字節碼中。但是更多類型信息可用於編譯器這一事實,為未來版本的 JVM 的優化帶來可能。由於泛型的實現方式,支持泛型(幾乎)不需要 JVM 或類文件更改。所有工作都在編譯器中完成,編譯器生成類似於沒有泛型(和強制類型轉換)時所寫的代碼,只是更能確保類型安全而已。

使用泛型的一些規則與限制


  1. 泛型的類型參數只能是類類型(包括自定義類),不能是基本類型。
  2. 同一種泛型可以對應多個版本(因為參數類型是不確定的),不同版本的泛型類實例是不兼容的。
  3. 泛型的類型參數可以有多個。
  4. 泛型的參數類型可以使用extends語句,例如<T extends superclass>。習慣上成為“有界類型”。
  5. 泛型的參數類型還可以是通配符類型。例如Class<?> classType = Class.forName(Java.lang.String);

 相關博客:

http://www.cnblogs.com/zhengbin/p/5343126.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM