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

詳談Java中的Object、T(泛型)、?區(qū)別

 更新時間:2017年06月19日 08:46:25   投稿:jingxian  
下面小編就為大家?guī)硪黄斦凧ava中的Object、T(泛型)、?區(qū)別。小編覺得挺不錯的,現在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

因為最近重新看了泛型,又看了些反射,導致我對Object、T(以下代指泛型)、?產生了疑惑。

我們先來試著理解一下Object類,學習Java的應該都知道Object是所有類的父類,注意:那么這就意味著它的范圍非常廣!首先記住這點,如果你的參數類型時Object,那么的參數類型將非常廣!

《Thinking in Java》中說很多原因促成了泛型的出現,最引人注目的一個原因就是為了創(chuàng)造容器類。這個要怎么來理解呢?我的理解是,可以拋開這個為了創(chuàng)造容器類這個,而是回到泛型的目的是限定某種類型上來。

所以我們現在能小結一下Object和T很重要的兩點區(qū)別就是:

Object范圍非常廣,而T從一開始就會限定這個類型(包括它可以限定類型為Object)。

Object由于它是所有類的父類,所以會強制類型轉換,而T從一開始在編碼時(注意是在寫代碼時)就限定了某種具體類型,所以它不用強制類型轉換。(之所以要強調在寫代碼時是因為泛型在虛擬機中會被JVM擦除掉它的具體類型信息,這點可參考泛型,在這里不做引申)。

比如在jdk中的List類是個泛型類。現在我們制定它的類型是Object。

List<Object> list = new ArrayList<Object>();
int i = 0;
String s = "s";
list.add(i);
list.add(s);

List本身是個泛型類,現在我們指定它接收Object類型的參數,此時就可以放置任意類型的參數進去,而在取出來是就必須得進行強制類型轉換成具體的類型。

現在我們如果將List指定接收String類型的參數,那么這個List就只能放置String類型,且取出來時就不用進行強制類型轉換。

這點給我們帶來的啟示是,在編寫類似List類的時候,一定要注意是否用泛型。一定要多寫幾個泛型類,多討論多理解,不然還是可能會攪在一起。

接著是?,這個可能在用到反射需要獲取Class類型時用到,它的解釋就是:接收一個不確定的類型,有點和Object一樣。我對它一個理解是,如果只用"?"那么它和Object是一樣的,但是"?"有比Object稍微“高級”有點的用法,就是它能縮小一個不確定的范圍,利用類似"? extends Test",這就意味著只接收接收Test類的繼承類,是不是比Object的范圍縮小了?

以上就是Object、T、?的區(qū)別。多寫幾行代碼,多做試驗,多討論,就知道在何時何地恰當的使用了。

這篇詳談Java中的Object、T(泛型)、?區(qū)別就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java8并發(fā)新特性CompletableFuture

    Java8并發(fā)新特性CompletableFuture

    這篇文章主要介紹了Java8并發(fā)新特性CompletableFuture,CompletableFuture針對Future接口做了改進,相比Callable/Runnable接口它支持多任務進行鏈式調用、組合、多任務并發(fā)處理,下面文章更多相關內容得介紹,需要的小伙伴可以參考一下
    2022-06-06
  • Java 實現網絡爬蟲框架詳細代碼

    Java 實現網絡爬蟲框架詳細代碼

    這篇文章主要介紹了Java 實現網絡爬蟲框架,主要是用于爬取網絡上一些內容,比如超鏈接之類的,需要的朋友可以參考下面文章內容
    2021-09-09
  • elk之實現在kibana高效精準查詢日志

    elk之實現在kibana高效精準查詢日志

    這篇文章主要介紹了elk之實現在kibana高效精準查詢日志方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Java中如何執(zhí)行多條shell/bat命令

    Java中如何執(zhí)行多條shell/bat命令

    這篇文章主要介紹了Java中如何執(zhí)行多條shell/bat命令的方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • java swagger ui 添加header請求頭參數的方法

    java swagger ui 添加header請求頭參數的方法

    今天小編就為大家分享一篇java swagger ui 添加header請求頭參數的方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • Java基于外觀模式實現美食天下食譜功能實例詳解

    Java基于外觀模式實現美食天下食譜功能實例詳解

    這篇文章主要介紹了Java基于外觀模式實現美食天下食譜功能,較為詳細的講述了外觀模式的概念、原理并結合實例形似詳細分析了Java基于外觀模式實現美食天下食譜功能的具體操作步驟與相關注意事項,需要的朋友可以參考下
    2018-05-05
  • springboot項目事務標簽驗證

    springboot項目事務標簽驗證

    本文主要介紹了springboot項目事務標簽驗證,文中通過示例代碼介紹的非常詳細,詳細的介紹了不加事務標簽和加事物標簽的使用,需要的朋友們下面隨著小編來一起學習學習吧
    2021-07-07
  • 非常詳細的Java異常處理機制知識整理大全

    非常詳細的Java異常處理機制知識整理大全

    Java異常指在程序運行時可能出現的一些錯誤,比如試圖打開一個根本不存在的文件等,異常處理將會改變程序的控制流程,讓程序有機會對錯誤做出處理,下面這篇文章主要給大家介紹了關于Java異常處理機制知識整理的相關資料,需要的朋友可以參考下
    2022-11-11
  • 詳解SpringBoot統(tǒng)一響應體解決方案

    詳解SpringBoot統(tǒng)一響應體解決方案

    這篇文章主要介紹了詳解SpringBoot統(tǒng)一響應體解決方案,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2019-07-07
  • mybatis-plus自動生成代碼的示例代碼

    mybatis-plus自動生成代碼的示例代碼

    這篇文章主要介紹了mybatis-plus自動生成代碼的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12

最新評論

教育| 彭泽县| 五华县| 清新县| 潜江市| 南溪县| 阿坝县| 阿合奇县| 庄浪县| 璧山县| 阿拉善右旗| 达尔| 黄梅县| 会东县| 北海市| 大邑县| 锦屏县| 沈阳市| 四会市| 合肥市| 额敏县| 军事| 循化| 天气| 连州市| 鱼台县| 永城市| 界首市| 福建省| 台北市| 博罗县| 阿拉尔市| 翁源县| 乐山市| 滦平县| 全南县| 瑞金市| 简阳市| 巴楚县| 洱源县| 太谷县|