千鋒教育Java入門全套視頻教程(java核心技術,適合java零基礎,Java

泛型的學習與理解
1.為什么要使用泛型?
集合的特點是彌補了數(shù)組中的某一個不足:數(shù)組中元素的數(shù)據(jù)類型必須是一致的。
在開發(fā)中,更加傾向于讓集合只存一種數(shù)據(jù)類型,單一職責原則。
通過使用泛型,約束了集合中元素的數(shù)據(jù)類型,此時防止數(shù)據(jù)類型的多樣化導致程序的錯誤。
2.泛型的好處:
- 泛型可以在編譯時幫助我們檢查數(shù)據(jù)類型
- 泛型可以減少數(shù)據(jù)類型轉換,自動轉換
3.泛型的形式:
示例:LinkedList<Integer> list=new LinkedList<Integer>();
<Integer>就是泛型,可以在<>中指定集合的數(shù)據(jù)類型,其中后一個<>中的數(shù)據(jù)類型是可以省略的
4.Java和C# 中泛型的區(qū)別:
- Java的泛型是可擦除的,簡單地說,java的泛型是只存在于源碼中,編譯后就沒有了,是一種語法糖。(語法糖:計算機語言中添加的某種語法,這種語法對語言的功能并沒有影響,但是更方便程序員使用。通常來說使用語法糖能夠增加程序的可讀性)
- C#的泛型編譯后仍然是泛型。(兩者的底層實現(xiàn)是完全不同的)
補充說明:兩種語言中的泛型的區(qū)別的原因是Java是一門向下兼容的語言,要保證無論如何更新版本,都可以運行之前版本的代碼,Java語言的開發(fā)人員為了在1.5版本中推出泛型并兼容之前的4個版本,才專門設計了現(xiàn)在的這種實現(xiàn)形式;而C#在推出泛型時才更新到第二個版本,使用人數(shù)不多,所以語言的開發(fā)者直接不需要考慮版本1的使用者,推出全新的泛型即可。
5.個人對泛型的理解:
用通俗的語言講,開始寫代碼的時候不知道集合中具體放的什么類型的數(shù)據(jù),但又要對數(shù)據(jù)類型進行限制,所以使用泛型類,這樣后面實際調用該集合的時候再指定限制的類型即可。
又因為開始在數(shù)據(jù)類型不確認的時候需要寫方法,但是泛型類的數(shù)據(jù)無法進行實例化(因為java中的泛型是可擦除的,是一種語法糖),所以通過Class類new出對象clazz用在方法中作為參數(shù),同時對Class通過泛型進行數(shù)據(jù)類型限制,保證和前面new的集合中的數(shù)據(jù)類型一致。
最終實現(xiàn)在不確定數(shù)據(jù)類型的情況下對集合中的數(shù)據(jù)類型進行限制,并可以在不確定數(shù)據(jù)類型的情況下寫方法。