1. 程式人生 > >重溫Java泛型,帶你更深入地理解它,更好的使用它!

重溫Java泛型,帶你更深入地理解它,更好的使用它!

## **1. 引言** jdk5.0中引入了Java泛型,目的是減少錯誤,並在型別上新增額外的抽象層。 本文將簡要介紹Java中的泛型、泛型背後的目標以及如何使用泛型來提高程式碼的質量。 ## **2. 為什麼要用泛型?** 設想一個場景,我們希望用Java建立一個列表來儲存*Integer*;程式碼可能會寫成這樣: ```java List list = new LinkedList(); list.add(new Integer(1)); Integer i = list.iterator().next(); ``` 令人驚訝的是,編譯器會提示最後一行。它不知道返回的資料型別是什麼。因此,編譯器提示需要進行顯式轉換: ```java Integer i = (Integer) list.iterator.next(); ``` 沒有任何約定可以保證列表的返回型別是*整數。*定義的列表可以包含任何物件。我們只知道我們是通過檢查上下文來檢索列表的。在檢視型別時,它只能保證它是一個*Object*,因此需要顯式轉換來確保型別是安全的。 這種轉換可能會令人感到聒噪,我們明明知道這個列表中的資料型別是*整數*。轉換的話,也把我們的程式碼搞得亂七八糟。如果程式設計師在顯式轉換中出錯,則可能會導致丟擲與 **型別相關的執行時錯誤** 。 如果程式設計師能夠表達他們使用特定型別的意圖,並且編譯器能夠確保這種型別的正確性,那麼這將更加容易。 這就是泛型背後的核心思想。 我們將前面程式碼段的第一行修改為: ```java List