一、什麼是泛型?
Java泛型設計原則:只要在編譯時期沒有出現警告,那麼執行時期就不會出現ClassCastException異常。
泛型:把型別明確的工作推遲到建立物件或呼叫方法的時候才去明確的特殊的型別
引數化型別:
把型別當作是引數一樣傳遞
只能是引用型別
相關術語:
中的E稱為型別引數變數
中的Integer稱為實際型別引數
整個稱為泛型型別
整個稱為引數化的型別ParameterizedType
需要更多Java知識的可以
關注我或者《歡迎大家評論》
二、為什麼需要泛型
早期Java是使用Object來代表任意型別的,但是向下轉型有強轉的問題,這樣程式就不太安全
首先,我們來試想一下:沒有泛型,集合會怎麼樣
Collection、Map集合對元素的型別是沒有任何限制的。本來我的Collection集合裝載的是全部的Dog物件,但是外邊把Cat物件儲存到集合中,是沒有任何語法錯誤的。
把物件扔進集合中,集合是不知道元素的型別是什麼的,僅僅知道是Object。因此在get()的時候,返回的是Object。外邊獲取該物件,還需要強制轉換
有了泛型以後:
程式碼更加簡潔【不用強制轉換】
程式更加健壯【只要編譯時期沒有警告,那麼執行時期就不會出現ClassCastException異常】
可讀性和穩定性【在編寫集合的時候,就限定了型別】
需要更多Java知識的可以
關注我或者《歡迎大家評論》