泛型

1.什么是泛型僵缺?

泛型:把類型明確的工作推遲到**創(chuàng)建對(duì)象或調(diào)用方法**的時(shí)候才去明確的特殊的類型
Java泛型設(shè)計(jì)原則:只要在**編譯時(shí)期**沒有出現(xiàn)警告闷哆,那么運(yùn)行時(shí)期就不會(huì)出現(xiàn)ClassCastException異常.

2.為什么需要泛型噪生?

早期Java是使用Object來代表任意類型的苹享,但是向下轉(zhuǎn)型有強(qiáng)轉(zhuǎn)的問題院领,這樣程序就不太安全弛矛。

首先,我們來試想一下:沒有泛型比然,集合會(huì)怎么樣
- Collection丈氓、Map集合對(duì)元素的類型是沒有任何限制的。本來我的Collection集合裝載的是全部的Dog對(duì)象强法,
但是外邊把Cat對(duì)象存儲(chǔ)到集合中万俗,是沒有任何語法錯(cuò)誤的。
- 把對(duì)象扔進(jìn)集合中饮怯,集合是不知道元素的類型是什么的闰歪,僅僅知道是Object。因此在get()的時(shí)候蓖墅,返回的是Object库倘。外邊獲取該對(duì)象,還需要強(qiáng)制轉(zhuǎn)換

有了泛型以后:
- 代碼更加簡(jiǎn)潔【不用強(qiáng)制轉(zhuǎn)換】
- 程序更加健壯【只要編譯時(shí)期沒有警告置媳,那么運(yùn)行時(shí)期就不會(huì)出現(xiàn)ClassCastException異秤谡粒】
- 可讀性和穩(wěn)定性【在編寫集合的時(shí)候,就限定了類型】

3.泛型類拇囊、接口

泛型類就是把泛型定義在類上迂曲,用戶使用該類的時(shí)候,才把類型明確下來
class 類名稱 <泛型標(biāo)識(shí)寥袭,泛型標(biāo)識(shí)路捧,...> {
    private 泛型標(biāo)識(shí) 變量名;
    ... ...
}
常用泛型標(biāo)識(shí):T传黄、E杰扫、K、V

泛型類注意事項(xiàng):

- 泛型類膘掰,如果沒有指定具體的數(shù)據(jù)類型章姓,此時(shí)佳遣,操作類型是Object
- 泛型的類型參數(shù)只能是類類型,不能是基本數(shù)據(jù)類型
- 泛型類型在邏輯是可以看成是多個(gè)不同的類型凡伊,但實(shí)際上都是相同的類型

從泛型類派生子類

-  子類也是泛型類零渐,子類和父類的泛型類型要一致
class CHildGeneric<T> extends Generic<T>
- 子類不是泛型類,父類要明確泛型的數(shù)據(jù)類型
class ChildGeneric extends Generic<String>

泛型接口

interface 接口名稱 <泛型標(biāo)識(shí)系忙,泛型標(biāo)識(shí)诵盼,...>{
泛型標(biāo)識(shí) 方法名;
... ...
}

泛型接口的使用

- 實(shí)現(xiàn)類不是泛型類银还,接口要明確數(shù)據(jù)類型
- 實(shí)現(xiàn)類是泛型類风宁,實(shí)現(xiàn)類和接口的泛型類要一致

4.泛型方法

修飾符 <T,E蛹疯,...> 返回類型 方法名(形參列表){
方法體...
}

泛型方法與可變參數(shù)--...代表可變參數(shù)戒财,可以接受數(shù)組

public static <E> void print(E... e){
      for (int i=0;i<e.length;i++){
      System.out.print(e[i])
}
}

泛型方法總結(jié):
- 泛型方法能使方法獨(dú)立于類而產(chǎn)生變化
- 如果static方法要使用泛型能力,就必須使其成為泛型方法

public static <T,E,K> void printType(T t,E e,K k){
    System.put.println(t + "\t" + t.getClass().getSimpleName());
}

5.泛型通配符

什么是類型通配符苍苞?

- 類型通配符一般是“?”代替具體的類型實(shí)參
- 類型通配符是類型實(shí)參固翰,不是類型形參

類型通配符上限

類/接口 <? extends 實(shí)參類型>
要求該泛型的類型狼纬,只能是實(shí)參類型羹呵,或者實(shí)參類型的子類;

類型通配符下限

類/接口 <? super 實(shí)參類型>
要求該泛型的類型疗琉,只能是實(shí)參類型冈欢,或者實(shí)參類型的父類;

6.泛型擦除

泛型是java 1.5才引入的概念盈简。
泛型信息只存在于代碼編譯階段凑耻,在進(jìn)入JVM之前,與泛型相關(guān)的信息會(huì)被擦除掉柠贤,我們稱之為類型擦除香浩。


image.png

image.png

image.png

7.泛型和數(shù)組

泛型數(shù)組的創(chuàng)建

  • 可以聲明帶泛型的數(shù)組引用,但是不能直接創(chuàng)建帶泛型的數(shù)組對(duì)象
  • 可以通過java.long.reflect.Array的newInstance(Class <T> ,int)創(chuàng)建T[]數(shù)組

8.泛型和反射

反射常用的泛型類

  • Class<T>
  • Constructor<T>

反射實(shí)現(xiàn)的3中方式:

第一種:通過Object類的getClass方法
Class cla = foo.getClass();

第二種:通過對(duì)象實(shí)例方法獲取對(duì)象
Class cla = foo.class;

第三種:通過Class.forName方式
Class cla = Class.forName("xx.xx.Foo");

對(duì)應(yīng)視屏教程:
https://www.bilibili.com/video/BV1xJ411n77R?p=13


參考:https://segmentfault.com/a/1190000014120746#item-4-5
https://blog.csdn.net/wfk2975019671/article/details/90604294

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末臼勉,一起剝皮案震驚了整個(gè)濱河市邻吭,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌宴霸,老刑警劉巖囱晴,帶你破解...
    沈念sama閱讀 218,451評(píng)論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異瓢谢,居然都是意外死亡畸写,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,172評(píng)論 3 394
  • 文/潘曉璐 我一進(jìn)店門氓扛,熙熙樓的掌柜王于貴愁眉苦臉地迎上來枯芬,“玉大人,你說我怎么就攤上這事∏” “怎么了翅楼?”我有些...
    開封第一講書人閱讀 164,782評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長真慢。 經(jīng)常有香客問我毅臊,道長,這世上最難降的妖魔是什么黑界? 我笑而不...
    開封第一講書人閱讀 58,709評(píng)論 1 294
  • 正文 為了忘掉前任管嬉,我火速辦了婚禮,結(jié)果婚禮上朗鸠,老公的妹妹穿的比我還像新娘蚯撩。我一直安慰自己,他們只是感情好烛占,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,733評(píng)論 6 392
  • 文/花漫 我一把揭開白布胎挎。 她就那樣靜靜地躺著,像睡著了一般忆家。 火紅的嫁衣襯著肌膚如雪犹菇。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,578評(píng)論 1 305
  • 那天芽卿,我揣著相機(jī)與錄音揭芍,去河邊找鬼。 笑死卸例,一個(gè)胖子當(dāng)著我的面吹牛称杨,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播筷转,決...
    沈念sama閱讀 40,320評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼姑原,長吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了呜舒?” 一聲冷哼從身側(cè)響起锭汛,我...
    開封第一講書人閱讀 39,241評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎阴绢,沒想到半個(gè)月后店乐,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,686評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡呻袭,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,878評(píng)論 3 336
  • 正文 我和宋清朗相戀三年眨八,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片左电。...
    茶點(diǎn)故事閱讀 39,992評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡廉侧,死狀恐怖页响,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情段誊,我是刑警寧澤闰蚕,帶...
    沈念sama閱讀 35,715評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站连舍,受9級(jí)特大地震影響没陡,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜索赏,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,336評(píng)論 3 330
  • 文/蒙蒙 一盼玄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧潜腻,春花似錦埃儿、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,912評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至威鹿,卻和暖如春剃斧,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背专普。 一陣腳步聲響...
    開封第一講書人閱讀 33,040評(píng)論 1 270
  • 我被黑心中介騙來泰國打工悯衬, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人檀夹。 一個(gè)月前我還...
    沈念sama閱讀 48,173評(píng)論 3 370
  • 正文 我出身青樓,卻偏偏與公主長得像策橘,于是被迫代替她去往敵國和親炸渡。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,947評(píng)論 2 355