JAVA高級(jí)(3)—— 泛型

一、泛型的基本概念

1疤估、概述

泛型的本質(zhì):參數(shù)化類(lèi)型,也就是說(shuō)所操作的數(shù)據(jù)類(lèi)型被指定為一個(gè)參數(shù)霎冯,在用到的時(shí)候再指定具體的類(lèi)型铃拇。

Java語(yǔ)言中的泛型只在源碼中存在,在編譯后的字節(jié)碼文件中沈撞,就已經(jīng)被替換為原來(lái)的原始類(lèi)型了慷荔,并且在相應(yīng)的地方插入了強(qiáng)制轉(zhuǎn)型代碼,因此對(duì)于運(yùn)行期的Java語(yǔ)言來(lái)說(shuō)缠俺,ArrayList<int>與ArrayList<String>就是同一個(gè)類(lèi)显晶。所以說(shuō)泛型技術(shù)實(shí)際上是Java語(yǔ)言的一顆語(yǔ)法糖,基于這種方法實(shí)現(xiàn)的泛型被稱(chēng)為偽泛型壹士。泛型提供了更好的安全性和可讀性吧碾。

2、基本術(shù)語(yǔ)

泛型類(lèi)型:整個(gè)成為ArrayList<E>
類(lèi)型變量或者類(lèi)型參數(shù):ArrayList<E>中的 E
參數(shù)化的類(lèi)型:整個(gè)ArrayList<Integer>
類(lèi)型參數(shù)的實(shí)例:ArrayList<Integer>中的Integer
原始類(lèi)型:ArrayList

二墓卦、泛型的使用

泛型的參數(shù)類(lèi)型可以用在類(lèi)倦春、接口和方法的創(chuàng)建中,分別稱(chēng)為泛型類(lèi)落剪、泛型接口和泛型方法睁本。

1、泛型類(lèi)的定義

class Pair<T,U> {  
    ...
}  

2忠怖、泛型接口的定義

interface Show<T,U>{  
    void show(T t,U u);  
}  

3呢堰、泛型方法的定義

public static <T, U> T get(T t, U u) {  
    ... 
}  

三、泛型變量的類(lèi)型限定

有的時(shí)候凡泣,類(lèi)枉疼、接口或方法需要對(duì)類(lèi)型變量加以約束⌒猓看下面的例子:

public static <T> T get(T t1,T t2) {  
        if(t1.compareTo(t2)>=0);//編譯錯(cuò)誤  
        return t1;  
}  

因?yàn)槁钗诰幾g之前,也就是我們還在定義這個(gè)泛型方法的時(shí)候贺纲,我們并不知道這個(gè)泛型類(lèi)型T航闺,到底是什么類(lèi)型,所以,只能默認(rèn)T為原始類(lèi)型Object潦刃。所以它只能調(diào)用來(lái)自于Object的那幾個(gè)方法侮措,而不能調(diào)compareTo方法」愿埽可我的本意就是要比較t1和t2分扎,怎么辦呢?這個(gè)時(shí)候胧洒,就要使用類(lèi)型限定畏吓,對(duì)類(lèi)型變量T設(shè)置限定來(lái)做到這一點(diǎn)。

我們知道略荡,所有實(shí)現(xiàn)Comparable接口的方法,都會(huì)有compareTo方法歉胶。所以汛兜,可以對(duì)<T>做如下限定:

public static <T extends Comparable> T get(T t1,T t2) { //添加類(lèi)型限定  
        if(t1.compareTo(t2)>=0);  
        return t1;  
}  

類(lèi)型限定在泛型類(lèi)、泛型接口和泛型方法中都可以使用通今,不過(guò)要注意下面幾點(diǎn):

  • 不管限定是類(lèi)還是接口粥谬,統(tǒng)一都使用關(guān)鍵字 extends(super)
  • 可以使用&符號(hào)給出多個(gè)限定,比如
    public static <T extends Comparable&Serializable> T get(T t1,T t2)
  • 如果限定既有接口也有類(lèi)辫塌,那么類(lèi)必須只有一個(gè)漏策,并且放在首位置
    public static <T extends Object&Comparable&Serializable> T get(T t1,T t2)
  • 類(lèi)型通配符:? 表示任何類(lèi)型
    void deal(List<? extends T> list)
  • A是B的子類(lèi),則A[ ] 是 B[ ]的子類(lèi)臼氨,但是List<A>不是List<B>的子類(lèi)

參考文獻(xiàn)

java泛型(一)掺喻、泛型的基本介紹和使用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市储矩,隨后出現(xiàn)的幾起案子感耙,更是在濱河造成了極大的恐慌,老刑警劉巖持隧,帶你破解...
    沈念sama閱讀 211,376評(píng)論 6 491
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件即硼,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡屡拨,警方通過(guò)查閱死者的電腦和手機(jī)只酥,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,126評(píng)論 2 385
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)呀狼,“玉大人裂允,你說(shuō)我怎么就攤上這事「缤В” “怎么了叫胖?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,966評(píng)論 0 347
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)她奥。 經(jīng)常有香客問(wèn)我瓮增,道長(zhǎng)怎棱,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,432評(píng)論 1 283
  • 正文 為了忘掉前任绷跑,我火速辦了婚禮拳恋,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘砸捏。我一直安慰自己谬运,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,519評(píng)論 6 385
  • 文/花漫 我一把揭開(kāi)白布垦藏。 她就那樣靜靜地躺著梆暖,像睡著了一般。 火紅的嫁衣襯著肌膚如雪掂骏。 梳的紋絲不亂的頭發(fā)上轰驳,一...
    開(kāi)封第一講書(shū)人閱讀 49,792評(píng)論 1 290
  • 那天,我揣著相機(jī)與錄音弟灼,去河邊找鬼级解。 笑死,一個(gè)胖子當(dāng)著我的面吹牛田绑,可吹牛的內(nèi)容都是我干的勤哗。 我是一名探鬼主播,決...
    沈念sama閱讀 38,933評(píng)論 3 406
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼掩驱,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼芒划!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起欧穴,我...
    開(kāi)封第一講書(shū)人閱讀 37,701評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤腊状,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后苔可,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體缴挖,經(jīng)...
    沈念sama閱讀 44,143評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,488評(píng)論 2 327
  • 正文 我和宋清朗相戀三年焚辅,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了映屋。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,626評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡同蜻,死狀恐怖棚点,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情湾蔓,我是刑警寧澤瘫析,帶...
    沈念sama閱讀 34,292評(píng)論 4 329
  • 正文 年R本政府宣布,位于F島的核電站,受9級(jí)特大地震影響贬循,放射性物質(zhì)發(fā)生泄漏咸包。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,896評(píng)論 3 313
  • 文/蒙蒙 一杖虾、第九天 我趴在偏房一處隱蔽的房頂上張望烂瘫。 院中可真熱鬧,春花似錦奇适、人聲如沸坟比。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,742評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)葛账。三九已至,卻和暖如春皮仁,著一層夾襖步出監(jiān)牢的瞬間籍琳,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,977評(píng)論 1 265
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人种冬。 一個(gè)月前我還...
    沈念sama閱讀 46,324評(píng)論 2 360
  • 正文 我出身青樓敷钾,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親愈犹。 傳聞我的和親對(duì)象是個(gè)殘疾皇子键科,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,494評(píng)論 2 348