Java基礎(chǔ)教程:java泛型教程

Java基礎(chǔ)教程:java泛型教程

長(zhǎng)沙中公優(yōu)就業(yè)      2022-05-06 21:07:01     77

Java基礎(chǔ)教程:java泛型教程,  為什么使用泛型?  Java編譯器在編譯時(shí)加強(qiáng)泛型代碼的類型檢查,避免運(yùn)行時(shí)不可預(yù)料的錯(cuò)誤?! 》盒椭С殖绦蚧愋妥鳛閰?

課程價(jià)格 請(qǐng)咨詢

上課時(shí)段: 授課校區(qū):

詳細(xì)介紹


  為什么使用泛型?


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


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


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


  泛型類型和方法


  泛型類型


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


  格式:classname{},其中T1,T2稱為typeparameters。


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


  實(shí)例化泛型類型:BoxintegerBox=newBox();


  泛型方法


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


  格式:publicstaticbooleancompare(Pairp1,Pairp2),static,non-static均可。


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


  通過(guò)extends來(lái)限定泛型類型和方法的邊界


  通配符和子類型


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



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



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


  上界:List,不確定類型是指定類型或指定類型的子類,可以放松對(duì)變量的限制,如匹配List,List。例如,List僅匹配Number類型的List,而List匹配Number類型和其子類的List。


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


  下界:List,不確定類型是指定類型或指定類型的父類,可以盡量提高靈活性,如匹配List,List,List


  通配符使用的場(chǎng)景


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


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


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


  利用WildcardCapture特性,通配符使用的場(chǎng)景為:


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


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


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


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


  泛型的限制


  不能用primitive類型實(shí)例化泛型。如:Pairp=newPair<>(8,'a');


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


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


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


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


  不能Create,Catch,或者Throw參數(shù)化類型對(duì)象。如:classMathExceptionextendsException{}


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


  publicvoidprint(SetstrSet){}


  publicvoidprint(SetintSet){}


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



      以上就是長(zhǎng)沙中公優(yōu)就業(yè)Java培訓(xùn)機(jī)構(gòu)小編介紹的“Java基礎(chǔ)教程:java泛型教程”的內(nèi)容,希望對(duì)大家有幫助,如有疑問(wèn),請(qǐng)?jiān)诰€咨詢,有專業(yè)老師隨時(shí)為你服務(wù)。


Java基礎(chǔ)教程

培訓(xùn)啦提醒您:交易時(shí)請(qǐng)核實(shí)對(duì)方資質(zhì),對(duì)于過(guò)大宣傳或承諾需謹(jǐn)慎!任何要求預(yù)付定金、匯款等方式均存在風(fēng)險(xiǎn),謹(jǐn)防上當(dāng)。