JAVA泛化及為什么需要泛化


泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。

    比如,有一種類型為List,此時該List可以是任意類型的列表,如Integer,String等等。

    如果把List類型改為List<Integer>,則此時只表示整型的列表。

    這就是所謂的將操作的數據類型指定為一個參數,這等同於C++里面的模板(template)。

    那么這么做有什么好處呢?

    比如原來我們有如下的程序:

List myIntList = new LinkedList();// 1

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

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

    在第三行中進行了強制類型轉換。這個類型轉換不僅僅帶來了混亂,它還可能產生一個運行時錯誤(run time error),因為程序員可能會犯錯。

程序員如何才能明確表示他們的意圖,把一個list中的內容限制為一個特定的數據類型呢?這是generics背后的核心思想。這是上面程序片斷的一個泛型版本:

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

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

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

注意變量myIntList的類型聲明。它指定這不是一個任意的List,而是一個Integer的List,寫作:List<Integer>。我們說List是一個帶一個類型參數的泛型接口(a generic interface that takes a type parameter),本例中,類型參數是Integer。我們在創建這個List對象的時候也指定了一個類型參數。

另一個需要注意的是第3行沒了類型轉換。

一句話:就是 給容器指定類型 ,那么在使用這個容器的時候,就不用特意的轉型了


免責聲明!

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



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