最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Java之泛型在使用過(guò)程全解析

 更新時(shí)間:2025年09月05日 16:37:21   作者:ByteBlossom  
這篇文章介紹了泛型的基本概念及其在Java中的應(yīng)用,泛型通過(guò)統(tǒng)一類(lèi)型參數(shù)消除了強(qiáng)轉(zhuǎn)問(wèn)題,廣泛應(yīng)用于集合類(lèi)(如List、Set、Map)中,確保元素類(lèi)型一致,文章還詳細(xì)解釋了泛型類(lèi)、泛型方法、子類(lèi)繼承、類(lèi)型限制(上限和下限)、泛型擦除以及橋接方法等關(guān)鍵概念

什么是泛型?

早期Java是使用Object來(lái)代表任意類(lèi)型的,但是向下轉(zhuǎn)型有強(qiáng)轉(zhuǎn)的問(wèn)題,這樣程序并不安全。針對(duì)List、Set、Map等集合類(lèi)型,它們對(duì)存儲(chǔ)的元素類(lèi)型是沒(méi)有任何限制的。

假如向List中存儲(chǔ)Dog類(lèi)型的對(duì)象,但是有人把Cat對(duì)象也存儲(chǔ)到這個(gè)List中了,那么在編譯上是沒(méi)有任何語(yǔ)法錯(cuò)誤的。所有使用該泛型參數(shù)的地方都被統(tǒng)一化,保證類(lèi)型一致。

如果未指定具體類(lèi)型,默認(rèn)是Object類(lèi)型。集合體系中的所有類(lèi)都增加了泛型,泛型也主要用在集合。

下面我們就針對(duì)泛型類(lèi)、泛型方法、泛型類(lèi)派生出的子類(lèi)、類(lèi)型通配符、泛型擦除、橋接方法等內(nèi)容進(jìn)行一一介紹。

泛型類(lèi)

泛型類(lèi)就是把泛型定義在類(lèi)上,用戶(hù)使用該類(lèi)的時(shí)候,才把類(lèi)型明確下來(lái)。

這樣的話(huà),用戶(hù)明確了什么類(lèi)型,該類(lèi)就代表著什么類(lèi)型,用戶(hù)在使用的時(shí)候就不用擔(dān)心強(qiáng)轉(zhuǎn)的問(wèn)題,和運(yùn)行時(shí)轉(zhuǎn)換異常的問(wèn)題了,如下所示:

泛型方法

除了在類(lèi)上使用泛型,我們可能僅僅在某個(gè)方法上需要使用泛型,外界僅僅是關(guān)心該方法,不關(guān)心類(lèi)其他的屬性,這樣的話(huà),我們?cè)谡麄€(gè)類(lèi)上定義泛型,未免就有些大題小作了。那么此時(shí),我們可以采用泛型方法。

泛型類(lèi)派生出的子類(lèi)

前面我們已經(jīng)定義了泛型類(lèi),泛型類(lèi)是擁有泛型這個(gè)特性的類(lèi),它本質(zhì)上還是一個(gè)Java類(lèi),那么它就可以被繼承或?qū)崿F(xiàn)。這里分兩種情況:

  • ①子類(lèi)明確泛型類(lèi)的類(lèi)型參數(shù)變量

  • ②子類(lèi)不明確泛型類(lèi)的類(lèi)型參數(shù)變量

我們創(chuàng)建一個(gè)Inter接口,在該接口上使用泛型,代碼如下所示:

類(lèi)型通配符

List<?>表示元素類(lèi)型未知的List,它可以匹配任何類(lèi)型的元素。

聲明List<?>后,不能向集合中添加元素,因?yàn)闊o(wú)法確定集合的元素類(lèi)型,唯一例外的是null。

泛型的上限和下限

泛型的上限:

格式:類(lèi)型名稱(chēng)<?extends 類(lèi)>對(duì)象名稱(chēng)

意義: 只能接收該類(lèi)型及其子類(lèi)

泛型的下限:

格式:類(lèi)型名稱(chēng)<?super類(lèi)>對(duì)象名稱(chēng)

意義:只能接收該類(lèi)型及其父類(lèi)型

類(lèi)型擦除

泛型是提供給javac編譯器使用的,它可以作為類(lèi)型的限制,讓編譯器在源代碼級(jí)別上,擋住非法類(lèi)型的數(shù)據(jù)。

但是在JDK1.5之前沒(méi)有泛型的概念,為了能夠與之前版本代碼兼容,編譯器編譯完帶有泛型的java程序后,生成的class字節(jié)碼文件中將不再帶有泛型信息,這個(gè)過(guò)程稱(chēng)為“擦除”。

橋接方法的作用是什么?

橋接方法是jdk1.5引入泛型后,為使java泛型方法生成的字節(jié)碼與jdk1.5版本之前的字節(jié)碼兼容由編譯器自動(dòng)生成的。可用 method.isBridge() 判斷method是否是橋接方法。

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java并發(fā)編程中的synchronized關(guān)鍵字詳細(xì)解讀

    Java并發(fā)編程中的synchronized關(guān)鍵字詳細(xì)解讀

    這篇文章主要介紹了Java并發(fā)編程中的synchronized關(guān)鍵字詳細(xì)解讀,在Java早期版本中,synchronized 屬于 重量級(jí)鎖,效率低下,這是因?yàn)楸O(jiān)視器鎖(monitor)是依賴(lài)于底層的操作系統(tǒng)的Mutex Lock來(lái)實(shí)現(xiàn)的,Java 的線(xiàn)程是映射到操作系統(tǒng)的原生線(xiàn)程之上的,需要的朋友可以參考下
    2023-12-12
  • BootStrap Jstree 樹(shù)形菜單的增刪改查的實(shí)現(xiàn)源碼

    BootStrap Jstree 樹(shù)形菜單的增刪改查的實(shí)現(xiàn)源碼

    這篇文章主要介紹了BootStrap Jstree 樹(shù)形菜單的增刪改查的實(shí)現(xiàn)源碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-02-02
  • SpringBoot攔截器以及源碼詳析

    SpringBoot攔截器以及源碼詳析

    攔截器在我們平時(shí)的項(xiàng)目中用處有很多,如:日志記錄(我們后續(xù)章節(jié)會(huì)講到)、用戶(hù)登錄狀態(tài)攔截、安全攔截等等,所以下面這篇文章主要給大家介紹了關(guān)于SpringBoot攔截器以及源碼的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • mybatisPlus實(shí)現(xiàn)倒序拼接字符串

    mybatisPlus實(shí)現(xiàn)倒序拼接字符串

    這篇文章主要介紹了mybatisPlus實(shí)現(xiàn)倒序拼接字符串方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • Java8不可或缺小幫手之日期應(yīng)用

    Java8不可或缺小幫手之日期應(yīng)用

    jdk1.8后引入了新的日期時(shí)間處理API,相比傳統(tǒng)的date操作更加簡(jiǎn)便,date中的SimpleDateFormat也是非線(xiàn)程安全的,廢話(huà)不多說(shuō),開(kāi)干
    2023-05-05
  • Java后端返回PDF預(yù)覽給前端的實(shí)現(xiàn)

    Java后端返回PDF預(yù)覽給前端的實(shí)現(xiàn)

    前端要預(yù)覽服務(wù)器PDF 可直接將要blob流返回給前端,即可用瀏覽器自帶pdf預(yù)覽功能打開(kāi),本文就來(lái)介紹一下如何實(shí)現(xiàn),感興趣的可以了解一下
    2023-09-09
  • MyBatis中的連接池及事物控制配置過(guò)程

    MyBatis中的連接池及事物控制配置過(guò)程

    連接池就是用于存儲(chǔ)數(shù)據(jù)庫(kù)連接的一個(gè)容器,容器其實(shí)就是一個(gè)集合對(duì)象,本文給大家介紹MyBatis中的連接池以及事物控制的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2021-05-05
  • 關(guān)于idea中SpringBoot啟動(dòng)失敗的坑

    關(guān)于idea中SpringBoot啟動(dòng)失敗的坑

    這篇文章主要介紹了關(guān)于idea中SpringBoot啟動(dòng)失敗的坑,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-03-03
  • 利用微信小程序+JAVA實(shí)現(xiàn)微信支付的全過(guò)程

    利用微信小程序+JAVA實(shí)現(xiàn)微信支付的全過(guò)程

    微信支付是一種在線(xiàn)支付解決方案,允許用戶(hù)通過(guò)微信內(nèi)的支付功能進(jìn)行付款,下面這篇文章主要給大家介紹了關(guān)于利用微信小程序+JAVA實(shí)現(xiàn)微信支付的相關(guān)資料,需要的朋友可以參考下
    2024-08-08
  • 配置化Feign接口動(dòng)態(tài)切換URL方式

    配置化Feign接口動(dòng)態(tài)切換URL方式

    本文介紹了在開(kāi)發(fā)、測(cè)試和生產(chǎn)環(huán)境中使用Feign接口時(shí),根據(jù)不同的環(huán)境動(dòng)態(tài)切換調(diào)用URL的方法,通過(guò)在不同環(huán)境的配置文件中配置URL,并實(shí)現(xiàn)一個(gè)Feign攔截器來(lái)讀取這些配置,從而實(shí)現(xiàn)URL的動(dòng)態(tài)切換,這種方法避免了引入過(guò)多步驟,同時(shí)也保證了不同環(huán)境下的URL正確調(diào)用
    2024-11-11

最新評(píng)論

儋州市| 襄汾县| 台北县| 江都市| 湘乡市| 密云县| 钦州市| 巍山| 饶平县| 峨边| 缙云县| 东至县| 绥棱县| 山阴县| 鄂伦春自治旗| 德江县| 色达县| 韶山市| 洪泽县| 平和县| 额济纳旗| 通榆县| 云霄县| 正镶白旗| 新民市| 于田县| 武川县| 南部县| 越西县| 连江县| 渭源县| 新营市| 澄城县| 安宁市| 衡山县| 万荣县| 太谷县| 灵川县| 武穴市| 和龙市| 县级市|