首頁 >Java >Java基礎 >什麼是java泛型

什麼是java泛型

angryTom
angryTom原創
2019-11-11 11:40:203560瀏覽

什麼是java泛型

什麼是java泛型

#泛型,即「參數化類型」。一提到參數,最熟悉的就是定義方法時有形參,然後在呼叫此方法時傳遞實參。那麼參數化類型怎麼理解呢?顧名思義,就是將型別由原來的具體的型別參數化,類似於方法中的變數參數,此時型別也定義成參數形式(可以稱之為型別),然後在使用/呼叫時傳入具體的型別(型別實參)

泛型的本質是為了參數化類型(在不創建新的類型的情況下,透過泛型指定的不同類型來控制形參具體限制的類型)。也就是說在泛型使用過程中,操作的資料型別被指定為一個參數,這種參數型別可以用在類別、介面和方法中,分別稱為泛型類別、泛型介面、泛型方法。 (推薦教學:java教學

泛型的作用:

編譯器檢查我們放入容器的元素是否滿足泛型容器定義的期許,我們只需要告訴編譯器我這個容器是一個處理何種類型的容器即可。編譯器為從容器中取出的元素進行自動轉型。

在泛型介入後,程式設計師的關注點由2點變成1點:

定義容器處理的類型,這樣放入容器的檢查和取出容器的轉型都交由編譯器來完成。

優點:

1、類型安全性

泛型的主要目標是提高Java程式的型別安全性。透過知道使用泛型定義的變數的類型限制,編譯器可以在非常高的層次上驗證類型假設。沒有泛型,這些假設就只存在於系統開發人員的腦中。

透過在變數聲明中捕獲此附加的類型信息,泛型允許編譯器實作這些附加的類型約束。類型錯誤現在就可以在編譯時被捕獲了,而不是在運行時當作ClassCastException展示出來。將類型檢查從執行時移到編譯時有助於Java開發人員更早、更容易找到錯誤,並可提高程式的可靠性。

2、消除強制型別轉換

泛型的一個附帶好處是,消除原始碼中的許多強制型別轉換。這使得程式碼更加可讀,並且減少了出錯機會。儘管減少強制類型轉換可以提高使用泛型類別的程式碼的累讚程度,但聲明泛型變數時卻會帶來相應的累讚程度。在簡單的程式中使用一次泛型變數不會降低程式碼累贊程度。但是對於多次使用泛型變數的大型程式來說,則可以累積起來降低累贊程度。所以泛型消除了強制型別轉換之後,會使得程式碼加清晰、筒潔。

###3、更高的運行效率######在非泛型程式設計中,將筒單類型作為Object傳遞時會引起Boxing(裝箱)和Unboxing(拆箱)操作,這兩個過程都是具有很大開銷的。引入泛型後,就不必進行Boxing和Unboxing操作了,所以運行效率相對較高,特別在對集合操作非常頻繁的系統中,這個特點帶來的性能提升更加明顯。 ######4、潛在的效能效益######泛型為較大的最佳化帶來可能。在泛型的初始實作中,編譯器將強制型別轉換(沒有泛型的話,Java系統開發人員會指定這些強制型別轉換)插入產生的字節碼。但是更多類型資訊可用於編譯器這一事實,為未來版本的JVM的最佳化帶來可能。 ###

以上是什麼是java泛型的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn