Java「泛型」究竟是什麼,怎麼使用?五分帶你學完泛型

Java的學習中有許多的知識點,作為熱門語言,十餘年來Java的基礎知識是很繁雜的,最近我也開始專攻基礎方面,給大家分享我所總結或收集牛人博客的“乾貨”今天我們講到的是大家都學過的基礎知識,Java泛型。相必大家在很多面試題中都見過這個點,那麼我們就正式開始分享了,老規矩大家可以“轉發,收藏,記筆記”。

在介紹這篇技術文章之前,小編先給大家分享一下,我是一名5年Java開發的程序員現在辭職在家,在此我跟大家說一下,因為最近是在整理,也就從2018初到現在剛剛準備好,一套系統的Java教程(基礎+案例+工具)今天我就給大家分享下我的成果。

Java“泛型”究竟是什麼,怎麼使用?五分帶你學完泛型

通用類型廣泛用於Java集合中。為什麼我們需要Java中的泛型類型?理解這個問題可以幫助我們更好地理解很多相關概念。

1.泛型概述

實現泛型的目標是在編譯時發現錯誤,而不是在運行時。在編譯時查找錯誤可以節省調試java程序的時間,因為編譯時錯誤更容易查找和修復。通用類型僅存在於編譯時。這個事實是學習Java Generics時最重要的事情。

2.如果沒有泛型怎麼辦?

在以下程序中,“Room”類定義了一個成員對象。我們可以傳遞任何對象,例如String,Integer等。

Java“泛型”究竟是什麼,怎麼使用?五分帶你學完泛型

當我們添加一個整數並投射它時,程序運行完全正常。但是如果用戶不小心將字符串“60”添加到其中,編譯器就不知道這是一個問題。程序運行時,它將獲得ClassCastException。

線程“main”java.lang.ClassCastException中的異常:java.lang.String無法 在collection.Main.main(Main.java:21)強制轉換為java.lang.Integer

你可能想知道為什麼不將字段類型聲明為Integer而不是Object。如果是這樣,那麼Room就沒那麼有用了,因為它只能存儲一種類型的東西

3.使用泛型時

如果使用泛型類型,程序將變為以下內容。

Java“泛型”究竟是什麼,怎麼使用?五分帶你學完泛型

現在,如果有人添加了room.add(“60”),將顯示編譯時錯誤,如下所示:

Java“泛型”究竟是什麼,怎麼使用?五分帶你學完泛型

我們很容易看出它是如何工作的。此外,不需要再從room.get()轉換結果,因為編譯知道get()將返回一個Integer。

4.總結

總之,使用泛型的原因如下:

  • 在編譯時更強大的類型檢查。
  • 消除顯性演員。
  • 實現更好的代碼可重用性,例如通用算法的實現

Java Generic類型只是一個編譯時的概念。在運行期間,所有類型的信息都被刪除,這就是調用類型擦除。這是一個有趣的例子,展示瞭如何避免Type Erasure的常見錯誤。

Java“泛型”究竟是什麼,怎麼使用?五分帶你學完泛型

好了這篇文章就分享到這裡了,不知道大家今天有沒有收穫如果有不足請在評論區指出,大家一起進步。


分享到:


相關文章: