大战熟女丰满人妻av-荡女精品导航-岛国aaaa级午夜福利片-岛国av动作片在线观看-岛国av无码免费无禁网站-岛国大片激情做爰视频

專注Java教育14年 全國咨詢/投訴熱線:400-8080-105
動力節(jié)點LOGO圖
始于2009,口口相傳的Java黃埔軍校
首頁 學(xué)習(xí)攻略 Java學(xué)習(xí) 2019年Java泛型用法總結(jié)

2019年Java泛型用法總結(jié)

更新時間:2019-10-22 14:34:25 來源:動力節(jié)點 瀏覽2515次



  為什么使用泛型?


  Java編譯器在編譯時加強泛型代碼的類型檢查,避免運行時不可預(yù)料的錯誤。


  泛型支持程序化類型作為參數(shù),使方法兼具靈活性。


  泛型能讓你實現(xiàn)泛型算法,更具有通用性。


  泛型類型和方法


  泛型類型


  參數(shù)化類型的類或接口。


  格式:classname<T1,T2,...,Tn>{/*...*/},其中T1,T2稱為typeparameters。


  調(diào)用泛型類型(又稱為參數(shù)化類型):Box<Integer>integerBox,傳入具體的類型。


  實例化泛型類型:Box<Integer>integerBox=newBox<Integer>();


  泛型方法


  參數(shù)化類型的方法。


  格式:publicstatic<K,V>booleancompare(Pair<K,V>p1,Pair<K,V>p2),static,non-static均可。


  調(diào)用泛型方法:Util.<Integer,String>compare(p1,p2)。可以利用類型推斷,像調(diào)用普通方法一樣調(diào)用泛型方法,如:Util.compare(p1,p2)


  通過extends來限定泛型類型和方法的邊界


  通配符和子類型


  Integer是Number的子類,但參數(shù)化類型Box<Integer>和Box<Number>沒有關(guān)系,他們的共同父類是Object。

image.png

  泛型類型之間幾乎沒有關(guān)系,但可以通過通配符在泛型類型之間建立關(guān)系。


image.png

  ?通配符,用于參數(shù)、字段、局部變量的類型,不用于泛型類型和方法。


  上界:List<?extendsNumber>,不確定類型是指定類型或指定類型的子類,可以放松對變量的限制,如匹配List<Number>,List<Integer>。例如,List<Number>僅匹配Number類型的List,而List<?extendsNumber>匹配Number類型和其子類的List。


  無界:List<?>,不確定類型的List。使用場景:1)List的元素都是Object類型,直接可以使用Object的方法。2)泛型類中的方法不依賴于類型參數(shù)。


  下界:List<?superInteger>,不確定類型是指定類型或指定類型的父類,可以盡量提高靈活性,如匹配List<Integer>,List<Number>,List<Object>。


  通配符使用的場景


  把參數(shù)變量看作兩類:


  1、『in』提供給方法內(nèi)部使用,即傳入數(shù)據(jù)。


  2、『out』提供給方法外部使用,即傳出數(shù)據(jù)。


  利用WildcardCapture特性,通配符使用的場景為:


  1、『in』使用上界通配符


  2、『out』使用下界通配符


  3、『in』可以使用Object的方法,使用無界通配符


  4、即用作『in』,又用作『out』的,不使用通配符


  泛型的限制


  不能用primitive類型實例化泛型。如:Pair<int,char>p=newPair<>(8,'a');


  不能實例化參數(shù)類型。如:newE();


  不能定義類的靜態(tài)類型字段是參數(shù)類型。如:privatestaticTos;


  參數(shù)類型不能使用instanceof和類型轉(zhuǎn)換。如:listinstanceofArrayList<Integer>


  不能創(chuàng)建參數(shù)化類型數(shù)組。如:List<Integer>[]arrayOfLists=newList<Integer>[2];


  不能Create,Catch,或者Throw參數(shù)化類型對象。如:classMathException<T>extendsException{/*...*/}


  重載方法不能使用參數(shù)化類型被擦除后擁有同樣的原生類型。如:


  publicvoidprint(Set<String>strSet){}


  publicvoidprint(Set<Integer>intSet){}


  被編譯擦除后是一樣的publicvoidprint(SetstrSet){}


  以上就是動力節(jié)點java培訓(xùn)機(jī)構(gòu)小編介紹的“2019年Java泛型用法總結(jié)”的內(nèi)容,希望對大家有幫助,如有疑問,請在線咨詢,有專業(yè)老師隨時為你服務(wù)。


  相關(guān)內(nèi)容


  java泛型方法的使用


  完整的Java軟件開發(fā)學(xué)習(xí)路線


  Java泛型定義與java用法泛型實例詳解


提交申請后,顧問老師會電話與您溝通安排學(xué)習(xí)

免費課程推薦 >>
技術(shù)文檔推薦 >>
主站蜘蛛池模板: 色综合天天综合 | 欧美国产亚洲18 | 国产亚洲区 | 免费观看四虎精品国产永久 | 日韩伊人网 | 视色视频在线 | 天海翼一区二区三区高清视频 | 99国产情在线视频 | 日日摸夜夜添夜夜添毛片 | a毛片久久免费观看 | 日韩欧美亚洲国产高清在线 | 伊人伊人伊人伊人 | 99热这里只有精品1 99热这里只有精品18 | 中文字幕日韩在线观看 | 热久久这里是精品6免费观看 | 免费毛片a线观看 | 国产欧美日韩免费一区二区 | 国产成人精品综合久久久软件 | 婷婷色九月综合激情丁香 | 天天搞夜夜爽 | 国产精品免费视频一区一 | 九九久久九九 | 久草精彩视频 | 波多野结衣三区 | 国产特黄 | 亚洲精品第五页中文字幕 | 日韩一区二区免费看 | 91精品国产视频 | 国产999在线| 日韩久久久精品中文字幕 | 性做久久久久久网站 | 国产成人精品视频一区 | 特黄一级大片 | 国产精品探花一区在线观看 | 国产丰满老厨女房乱 | 国产日产亚洲精品 | 在线看v | 亚洲综合亚洲综合网成人 | 久久99精品久久久久子伦小说 | 亚洲精品第一区二区三区 | 欧美日韩亚洲精品一区二区三区 |