Java基礎學習,什麼是泛型概念,使用泛型有哪些好處?

2021-01-09 螞蟻部落衝突

一般的類和方法,只能使用具體的類型,要麼是基礎數據類型,要麼是自定義類。

如果要編寫可以應用與多種類型的代碼,這種刻板的限制對代碼的束縛就會很大。

泛型的字面概念:

適合用於許多類型。

在面向對象中,多態算是一種泛化機制。

泛型的使用例子:

在如圖的例子中T就是類型參數

當你創建Holder對象時,必須指明想持有什麼類型的對象,將其置於尖括號內,就像main()中那樣。然後,你就只能在Holder中存入該類型(或其子類,以為多態與泛型不衝突)的對象了。並且,在你從Holder中取出它持有的對象時,自動地就是正確的類型。

java泛型核心概念:

告訴編譯器想要什麼類型,讓後編譯器幫你處理一切細節。

一般而言,你可以認為泛型與其他的類型差不多,只不過他們碰巧有參數罷了。

Java泛型中的標記符含義:

E - Element (在集合中使用,因為集合中存放的是元素)

T - Type(Java 類)

K - Key(鍵)

V - Value(值)

N - Number(數值類型)

? - 表示不確定的java類型

S、U、V - 2nd、3rd、4th types

使用泛型遇到的問題

1.任何基礎數據類型都不能作為類型參數:

學習泛型你會發現,Java泛型的限制之一,不能間基礎數據類型用作類型參數。

2.事項參數化接口:

一個類不能同時實現同一個泛型接口的兩種變體,由於擦除的原因,這兩個變體會成為相同的接口。

3.轉型和警告

使用帶有泛型類型參數的轉型或instanceof不會有任何效果。

4.重載

有與擦除的原因,重載方法將產生相同的類型籤名。

5.基類劫持了接口

Java中使用泛型最吸引人的地方就是在容器類中,包括List,各種Set,各種Map。

泛型優點:

當一個對象被放置在容器中時,這個對象會北向上轉型為Object,因此你會丟失類型信息。java如果類型放置錯誤導致取出的時候會進行強制類型轉換,會得到一個RuntimeException,雖然你能發現問題,當時是在運行時發現的而非在編譯發現它的。引入泛型並不會讓你誤用放入容器中的對象。

相關焦點

  • 什麼,JAVA的泛型是偽泛型
    這種參數類型可以用在類、接口和方法的創建中,分別稱為泛型類、泛型接口和泛型方法。具體來說,我們先通過對比下代碼,來進一步體會泛型的好處先看看沒有支持泛型之前的代碼沒有運用泛型的代碼通過現代idea自動編譯功能,由此可以大大提高我們的編程效率但是有關java的泛型有一些值得思考的問題:方法重載
  • 高頻考點:什麼是泛型,泛型的使用場景
    一起學習、成長、溫情的熱愛生活作者丨BossXiang 圖丨pexels泛型的使用場景,可以作用在什麼位置,使用泛型有什麼好處,靈魂三連問???1.泛型就是一種未知的類,將未知的類型聲明在集合、對象上,泛型的默認類型為Object。
  • Java泛型了解麼?什麼是類型擦除?介紹一下常用的通配符?
    Java 泛型(generics)是 JDK 5 中引入的一個新特性, 泛型提供了編譯時類型安全檢測機制,該機制允許程式設計師在編譯時檢測到非法的類型。泛型的本質是參數化類型,也就是說所操作的數據類型被指定為一個參數。
  • 一句話概述什麼是泛型,教你直白理解Java泛型
    泛型就是把類型明確的工作推遲到創建對象或調用方法的時候採取明確的特殊類型。參數化類型:把類型當做參數來傳遞。Object<數據類型>,這裡的數據類型只能是類類型,不能是基本類型。為什麼不能是基本類型?
  • Java泛型的約束與局限性
    :通過泛型數組包裝器,如ArrayList類,維護一個Object數組,然後通過進出口方法set、get來限定類型和強制轉換數組類型,從而間接實現泛型數組,例如:ArrayList: ArrayList<Pair<T>>、ArrayList<T>不能實例化類型變量T即不能使用new T(..)
  • 如何通俗易懂地理解什麼叫泛型?
    話不多說,開始今天的學習:補充學習一個知識點:泛型。這個概念是在集合中接觸到的,因為當時學的有點懵,所以就沒有立馬寫出來。現在回過頭來看,發現還是蠻簡單的。一、泛型的概念先回顧下集合和數組的區別:數組長度固定不變,可以存放任意數據類型,但存放的數據類型要一致。
  • 快報:正式提案將泛型特性加入 Go 語言
    基本語法如下:func Print[T any](s []T) {  // same as above } 其大體的概述如下: 函數可以具有使用方括號的其他類型參數列表,但其他情況下看起來像普通的參數列表:func F[T any](p T) { ... }。
  • 大佬|從啥也不會,到Java大佬,他就因為會了這一門絕技
    從一個啥也不會的Java小白,到Java大佬,就因為會了這一門杜門絕跡,泛型,成為令人仰慕的大佬,今天是本周的第六篇,主要內容是Java泛型什麼是泛型例如一段代碼//創建一個List集合ArrayList al = new ArrayList();al.add(123); //添加基本數據類型對象al.add("123"); //添加String對象al.add
  • 北大青鳥:學士後Java軟體工程師的主要課程有哪些?
    武漢北大青鳥中南軟體學院北大青鳥學士後Java軟體工程師(6.0)課程主要分為三個部分,包括:預科課程體系、技能學習課程體系和就業實訓課程體系。01、Java軟體工程師預科課程即編程入門課程,專門針對計算機基礎薄弱的學員設計,這部分內容中心根據需要自行選擇實施,不納入實施體系要求範圍。02、Java軟體工程師技能學習課程共分為三個單元:Java基礎單元(U1)、Web編程單元(U2)、企業框架(U3),是學員必須掌握的技能。
  • Go 擺脫了 C,又惹上了 Java?
    我們有自己的 C 編譯器來編譯運行時,我們需要一個帶有跟 Go ABI 一樣編譯器,比如 segmented stacks。使用 Go 編寫可以擺脫 C 編譯器的劣勢,這是比使用 Go 重寫編譯器還重要。(所有使用 Go 重寫編譯器的理由都可以作為使用 Go 重寫運行時的理由)限制運行時只用一種語言編寫,更容易進行集成,管理 stack 等等操作。
  • Go語言和Java、Python等其他語言的對比分析
    因為Go語言容易學習,所以一個普通的大學生花幾個星期就能寫出來可以上手的、高性能的應用。在國內大家都追求快,這也是為什麼國內Go流行的原因之一。Go 語言的語法特性簡直是太簡單了,簡單到你幾乎玩不出什麼花招,直來直去的,學習曲線很低,上手非常快。
  • 北大青鳥學士後Java課程體系
    1、課程體系學士後 Java 軟體工程師產品課程體系分為三部分,包括預科課程、技能學習課程和就業實訓課程,課程總實施周期約 6~8 個月。具體課程體系見圖 1 所示。圖 1 Java6.0 課程體系圖預科課程即編程入門課程,專門針對計算機基礎薄弱的學員設計,這部分內容中心根據需要自行選擇實施,不納入實施體系要求範圍。技能學習課程共分為三個單元:JAVA 基礎單元(U1)、WEB 編程單元(U2)、企業框架(U3),是學員必須掌握的技能。
  • java工作需要什麼水平 - CSDN
    前言一份月薪30K的java開發崗位工作要求是怎樣的呢?面試都會問到哪些呢?內存分配、進程、線程調度這些簡單基礎的概念你還是應該有一點撒?別說這些東西沒用,很多時候在實現的時候,很多軟體參考了不少作業系統的設計思想。3、資料庫層面。幾大範式定義概念搞懂。資料庫事務的ACID總能扯明白吧?隔離層級分別保障的力度,和依然存在的問題你得知曉吧?有些都工作幾年的人了,不過分吧?SQL優化搞沒搞過?
  • JAVA專業術語面試100問
    1、面向對象的特點有哪些?抽象、繼承、封裝、多態。2、接口和抽象類有什麼聯繫和區別?3、重載和重寫有什麼區別?4、java有哪些基本數據類型?21、java中垃圾收集的方法有哪些?22、如何判斷一個對象是否存活?(或者GC對象的判定方法)?23、Java GC是在什麼時候,對什麼東西,做了什麼事情?24、什麼是類加載器雙親委派模型機制?
  • Java之date毫秒值的概念和作用
    各位小夥伴們大家好,這次小編要介紹的是毫秒值的概念和作用,java.util.Date: 表示時間和日期的類,類Date表示特定的瞬間,精確到毫秒。……毫秒值的作用:可以對時間和日期進行計算2099-01-03到 2088-01-01 中間一共有多少天可以把日期轉換成毫秒進行計算,計算完畢,把毫秒轉換為日期日期轉換成毫秒:當前日期:2019-09-08時間原點(0毫秒):1970年1月1日00:00:00(英國格林威治)就是計算當前日期到時間原點之間一共經歷了多少毫秒注意:中國屬於東八區,會把時間增加8
  • 豆腐貓砂有什麼優點?使用有哪些好處?
    豆腐貓砂有什麼優點?使用有哪些好處?貓砂是小貓生活中的必備用品,小貓每次在上廁所的時候都會用到。貓砂的出現使餵養者更方便照顧小貓,小貓在如廁後我們只需要將小貓弄髒的貓砂剷除掉,並且定期更換貓砂就可以了。
  • 支撐著天貓雙11狂歡購物的是什麼——java程序
    那麼,這麼龐大的用戶同天消費的背後,是什麼在支撐著天貓雙11的運營呢?毫無疑問,是Java語言!淘寶作為世界上規模最大、複雜性最高電商系統,它的一切都是在Java語言的基礎上建立起來的。淘寶在2004年就從PHP語言轉換成了Java語言,阿里系公司基本是全線使用Java語言,而且水平在國際上也是一流的。