泛型小總結(jié)

通過這些網(wǎng)友分享的資料

https://www.cnblogs.com/lwbqqyumidi/p/3837629.html

https://www.cnblogs.com/lihaoyang/p/7104293.html

為什么出現(xiàn)java泛型:

先看一個例子:? List list = new List(); list.add(Object);? 可以添加任何是 object子類的對象

假如添加了 String 后又添加 int 在輸出的時候通過for循環(huán):

String name = (String) list.get(i);

System.out.println("name:" + name);

那么會出現(xiàn)?java.lang.ClassCastException 異常全肮。這是在強轉(zhuǎn)的數(shù)據(jù)類型的時候?qū)е碌摹?/p>

這種胡亂添加的行為如果沒有按規(guī)定當然是會出差錯描验。 java泛型的提出就是一個規(guī)范,規(guī)范了一組數(shù)據(jù)的類型一致性九秀。即便有人想亂來也不會添加數(shù)據(jù)成功摘刑。

我自己對泛型實現(xiàn)的思路:?

(1)需要一個方法阻止別人亂來萌焰。(2)這個方法如何實現(xiàn)?(3) java的方法? public void fun();

(4)要阻止別人亂來就需要一個限制。(5) public void fun(int XXX);(6) 可以利用參數(shù)的類型作為入口的限制,限制了入口呈宇,別人想亂來也不可能(7)正是這個參數(shù)類型好爬,使得別人想傳個 string 或者其他類型進來都會編譯失敗。(8)那么基于這個思想甥啄,可以擴大到為 類,對象 實現(xiàn)這種規(guī)范存炮。

這個實現(xiàn)被java 叫 :? 參數(shù)化類型? 即 泛型

List<String> list = new ArrayList<String>();?

list.add("qqyumidi");? list.add("corn");? ? 這樣想亂叫別的類型自然是報錯的

自定義泛型:

class abc <T>{

private T i;

public T Gettaobao() { return i; }

public void ste(T i) { this.i = i; }? ? ? ?}??

在泛型接口、泛型類和泛型方法的定義過程中蜈漓,我們常見的如T穆桂、E、K融虽、V等形式的參數(shù)常用于表示泛型形參享完,由于接收來自外部使用時候傳入的類型實參。

注意:

abc <Integer> age = new abc<>();? ? ? ? ? abc <String> agS = new abc<>(); System.out.println("name class:" + age.getClass()); // name class:class exercise.abc System.out.println("age class:" + agS.getClass()); // age class:class exercise.abc System.out.println(agS.getClass() == age.getClass()); // true

我們發(fā)現(xiàn)有额,在使用泛型類時般又,雖然傳入了不同的泛型實參,但并沒有真正意義上生成不同的類型巍佑,傳入不同泛型實參的泛型類在內(nèi)存上只有一個茴迁,即還是原來的最基本的類型(本實例中為Box),當然萤衰,在邏輯上我們可以理解成多個不同的泛型類型堕义。

為什么?為什么?為什么?

其原因脆栋,在于Java中的泛型這一概念提出的目的倦卖,導致其只是作用于代碼編譯階段,在編譯過程中椿争,對于正確檢驗泛型結(jié)果后怕膛,會將泛型的相關信息擦出,也就是說丘薛,成功編譯過后的class文件中是不包含任何泛型信息的嘉竟。泛型信息不會進入到運行時階段。所以想看泛型實現(xiàn)的源碼的同學還是不要和我一樣癡心妄想了。

類型通配符 舍扰? 的此處不講倦蚪。

進一步拓展:? 繼承泛型類

?extends 子類繼承了 泛型父類?

class abcd<T> extends abc<T>? ?//那么子類必須也是泛型

通過java繼承可知,父類的一切包括 泛型 也會被繼承過來边苹。

但是在實現(xiàn)泛型的時候又是有些區(qū)別:

class abc <T,E> //father? ?

class abcd<T, E> extends abc<T,E>? //全保留

class abcd<T> extends abc<T,Integer>? ?//部分參數(shù)類型保留下而已,但是父類的泛型有一個參數(shù)必須具體化陵且。否則會報錯

class abcd<A,B> extends abc<String,Integer>??

class abcd<A,B> extends abc//類型擦除

拓展小知識:

class? ab<A,B> extends Father//泛型擦除時,(按object處理)(存在警告)个束。

ab<object,object> a = new??ab<object,?object?> ()

ab a = new?ab ()

上述兩個創(chuàng)建對象在編譯時慕购,雖然同樣是按 object 處理,但是 第一個會進行 類型檢查茬底,不會出現(xiàn)警告沪悲。第二個會出現(xiàn)警告,不會類型檢查

拓展大知識:??泛型接口:與泛型類 同理阱表。

Java中的實際類型信息不管是編譯時期還是在運行時期都被擦除了殿如,這就是擦除的效果。由于有了擦除最爬,Java編譯器無法將obj調(diào)用f()這一需求映射到HasF擁有f()這一事實上涉馁。(事實上擦除是將泛型類型信息擦除到了它的第一個邊界,默認不設置的邊界是Object爱致,你可以調(diào)用Object的方法烤送,可以這樣設置邊界——<T extends HasF>,設置邊界后就可以調(diào)用f()了

---------------------

作者:李簡單

來源:CSDN

原文:https://blog.csdn.net/holleykitty/article/details/80481527

版權聲明:本文為博主原創(chuàng)文章糠悯,轉(zhuǎn)載請附上博文鏈接帮坚!

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市互艾,隨后出現(xiàn)的幾起案子叶沛,更是在濱河造成了極大的恐慌,老刑警劉巖忘朝,帶你破解...
    沈念sama閱讀 218,941評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異判帮,居然都是意外死亡局嘁,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評論 3 395
  • 文/潘曉璐 我一進店門晦墙,熙熙樓的掌柜王于貴愁眉苦臉地迎上來悦昵,“玉大人,你說我怎么就攤上這事晌畅〉福” “怎么了?”我有些...
    開封第一講書人閱讀 165,345評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長棋凳。 經(jīng)常有香客問我拦坠,道長,這世上最難降的妖魔是什么剩岳? 我笑而不...
    開封第一講書人閱讀 58,851評論 1 295
  • 正文 為了忘掉前任贞滨,我火速辦了婚禮,結(jié)果婚禮上拍棕,老公的妹妹穿的比我還像新娘晓铆。我一直安慰自己,他們只是感情好绰播,可當我...
    茶點故事閱讀 67,868評論 6 392
  • 文/花漫 我一把揭開白布骄噪。 她就那樣靜靜地躺著,像睡著了一般蠢箩。 火紅的嫁衣襯著肌膚如雪链蕊。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,688評論 1 305
  • 那天忙芒,我揣著相機與錄音示弓,去河邊找鬼。 笑死呵萨,一個胖子當著我的面吹牛奏属,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播潮峦,決...
    沈念sama閱讀 40,414評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼囱皿,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了忱嘹?” 一聲冷哼從身側(cè)響起嘱腥,我...
    開封第一講書人閱讀 39,319評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎拘悦,沒想到半個月后齿兔,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡础米,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,945評論 3 336
  • 正文 我和宋清朗相戀三年分苇,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片屁桑。...
    茶點故事閱讀 40,096評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡医寿,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出蘑斧,到底是詐尸還是另有隱情靖秩,我是刑警寧澤须眷,帶...
    沈念sama閱讀 35,789評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站沟突,受9級特大地震影響花颗,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜事扭,卻給世界環(huán)境...
    茶點故事閱讀 41,437評論 3 331
  • 文/蒙蒙 一捎稚、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧求橄,春花似錦今野、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,993評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至涵亏,卻和暖如春宰睡,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背气筋。 一陣腳步聲響...
    開封第一講書人閱讀 33,107評論 1 271
  • 我被黑心中介騙來泰國打工拆内, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人宠默。 一個月前我還...
    沈念sama閱讀 48,308評論 3 372
  • 正文 我出身青樓麸恍,卻偏偏與公主長得像,于是被迫代替她去往敵國和親搀矫。 傳聞我的和親對象是個殘疾皇子抹沪,可洞房花燭夜當晚...
    茶點故事閱讀 45,037評論 2 355

推薦閱讀更多精彩內(nèi)容

  • 泛型,一個孤獨的守門者瓤球。 大家可能會有疑問融欧,我為什么叫做泛型是一個守門者。這其實是我個人的看法而已卦羡,我的意思是說泛...
    程序員BUG閱讀 361評論 0 0
  • 泛型噪馏,一個孤獨的守門者。 大家可能會有疑問绿饵,我為什么叫做泛型是一個守門者逝薪。這其實是我個人的看法而已,我的意思是說泛...
    傳奇內(nèi)服號閱讀 404評論 0 0
  • 開發(fā)人員在使用泛型的時候蝴罪,很容易根據(jù)自己的直覺而犯一些錯誤。比如一個方法如果接收List作為形式參數(shù)步清,那么如果嘗試...
    時待吾閱讀 1,055評論 0 3
  • 泛型程序設計 泛型程序設計意味著編寫的代碼可以被很多不同類型的對象所重用要门。例如ArrayList類可以聚集任何類型...
    Steven1997閱讀 715評論 1 0
  • 一虏肾、泛型簡介1.引入泛型的目的 了解引入泛型的動機,就先從語法糖開始了解欢搜。 語法糖 語法糖(Syntactic S...
    Android進階與總結(jié)閱讀 1,029評論 0 9