亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

因?yàn)樽罱匦驴戳朔盒?,又看了些反射,?dǎo)致我對(duì)Object、T(以下代指泛型)、?產(chǎn)生了疑惑。

我們先來試著理解一下Object類,學(xué)習(xí)Java的應(yīng)該都知道Object是所有類的父類,注意:那么這就意味著它的范圍非常廣!首先記住這點(diǎn),如果你的參數(shù)類型時(shí)Object,那么的參數(shù)類型將非常廣!

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

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

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

Object由于它是所有類的父類,所以會(huì)強(qiáng)制類型轉(zhuǎn)換,而T從一開始在編碼時(shí)(注意是在寫代碼時(shí))就限定了某種具體類型,所以它不用強(qiáng)制類型轉(zhuǎn)換。(之所以要強(qiáng)調(diào)在寫代碼時(shí)是因?yàn)榉盒驮谔摂M機(jī)中會(huì)被JVM擦除掉它的具體類型信息,這點(diǎn)可參考泛型,在這里不做引申)。

比如在jdk中的List類是個(gè)泛型類?,F(xiàn)在我們制定它的類型是Object。

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

List本身是個(gè)泛型類,現(xiàn)在我們指定它接收Object類型的參數(shù),此時(shí)就可以放置任意類型的參數(shù)進(jìn)去,而在取出來是就必須得進(jìn)行強(qiáng)制類型轉(zhuǎn)換成具體的類型。

現(xiàn)在我們?nèi)绻麑ist指定接收String類型的參數(shù),那么這個(gè)List就只能放置String類型,且取出來時(shí)就不用進(jìn)行強(qiáng)制類型轉(zhuǎn)換。

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

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

以上就是Object、T、?的區(qū)別。多寫幾行代碼,多做試驗(yàn),多討論,就知道在何時(shí)何地恰當(dāng)?shù)氖褂昧恕?/p>

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

相關(guān)文章

  • java發(fā)送郵件示例講解

    java發(fā)送郵件示例講解

    這篇文章主要為大家詳細(xì)介紹了java發(fā)送郵件示例的全過程,溫習(xí)郵件協(xié)議,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-03-03
  • 使用Spring的StopWatch實(shí)現(xiàn)代碼性能監(jiān)控的方法詳解

    使用Spring的StopWatch實(shí)現(xiàn)代碼性能監(jiān)控的方法詳解

    在開發(fā)過程中,偶爾還是需要分析代碼的執(zhí)行時(shí)間,Spring 框架提供了一個(gè)方便的工具類 StopWatch,本文將介紹 StopWatch 的基本用法,并通過示例演示如何在項(xiàng)目中使用 StopWatch 進(jìn)行代碼性能監(jiān)控
    2023-12-12
  • 基于Java編寫一個(gè)粽子大作戰(zhàn)小游戲

    基于Java編寫一個(gè)粽子大作戰(zhàn)小游戲

    端午節(jié),又稱龍舟節(jié)、重午節(jié),是中國(guó)的傳統(tǒng)節(jié)日之一,每年農(nóng)歷五月初五慶祝,雖然端午假期已經(jīng)過去了,小編還是用Java編寫了一個(gè)粽子大作戰(zhàn)小游戲,感興趣的可以了解一下
    2023-06-06
  • Spring?注入靜態(tài)對(duì)象使用三種方式示例

    Spring?注入靜態(tài)對(duì)象使用三種方式示例

    這篇文章主要為大家介紹了Spring注入靜態(tài)對(duì)象使用的三種方式示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-07-07
  • 詳解Java線程編程中的volatile關(guān)鍵字的作用

    詳解Java線程編程中的volatile關(guān)鍵字的作用

    這篇文章主要介紹了Java線程編程中的volatile關(guān)鍵字的作用,針對(duì)其禁止進(jìn)行指令重排序和讀寫內(nèi)存方面著重講解,需要的朋友可以參考下
    2015-12-12
  • SpringMVC中處理Http請(qǐng)求的原理詳解

    SpringMVC中處理Http請(qǐng)求的原理詳解

    這篇文章主要介紹了SpringMVC中處理Http請(qǐng)求的原理詳解,當(dāng)一個(gè)http請(qǐng)求過來了首先經(jīng)過的是DispatcherServlet這么一個(gè)前端控制器并調(diào)用了這個(gè)前端控制器的doService方法,這個(gè)方法最終我們發(fā)現(xiàn)它調(diào)用了doDispatcher這么一個(gè)方法,需要的朋友可以參考下
    2023-12-12
  • Spring事務(wù)原理解析

    Spring事務(wù)原理解析

    Spring事務(wù)有可能會(huì)提交,回滾、掛起、恢復(fù),所以Spring事務(wù)提供了一種機(jī)制,可以讓程序員來監(jiān)聽當(dāng)前Spring事務(wù)所處于的狀態(tài),這篇文章主要介紹了Spring底層事務(wù)原理,需要的朋友可以參考下
    2022-12-12
  • 一文詳解JavaWeb過濾器(Filter)

    一文詳解JavaWeb過濾器(Filter)

    本文主要介紹了一文詳解JavaWeb過濾器(Filter),文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-05-05
  • 關(guān)于Redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&錯(cuò)誤的解決方法

    關(guān)于Redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&錯(cuò)誤的解決方法

    這篇文章主要介紹了關(guān)于Redis鍵值出現(xiàn)\xac\xed\x00\x05t\x00&的解決方法,出現(xiàn)該問題的原因是, redis template向redis存放使用java對(duì)象序列化的值,序列化方式和string的一般方式不同,需要的朋友可以參考下
    2023-08-08
  • Java中的 BigDecimal 和 String 的相互轉(zhuǎn)換問題

    Java中的 BigDecimal 和 String 的相互轉(zhuǎn)換問題

    這篇文章主要介紹了Java中的 BigDecimal 和 String 的相互轉(zhuǎn)換問題,本文通過示例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-05-05

最新評(píng)論