更新時間:2020-03-03 11:03:03 來源:動力節點 瀏覽2388次
為什么使用泛型?
Java編譯器在編譯時加強泛型代碼的類型檢查,避免運行時不可預料的錯誤。
泛型支持程序化類型作為參數,使方法兼具靈活性。
泛型能讓你實現泛型算法,更具有通用性。
泛型類型和方法
泛型類型
參數化類型的類或接口。
格式:classname
調用泛型類型(又稱為參數化類型):Box
實例化泛型類型:Box
泛型方法
參數化類型的方法。
格式:publicstatic
調用泛型方法:Util.
通過extends來限定泛型類型和方法的邊界
通配符和子類型
Integer是Number的子類,但參數化類型Box
泛型類型之間幾乎沒有關系,但可以通過通配符在泛型類型之間建立關系。
?通配符,用于參數、字段、局部變量的類型,不用于泛型類型和方法。
上界:List,不確定類型是指定類型或指定類型的子類,可以放松對變量的限制,如匹配List
無界:List,不確定類型的List。使用場景:1)List的元素都是Object類型,直接可以使用Object的方法。2)泛型類中的方法不依賴于類型參數。
下界:List,不確定類型是指定類型或指定類型的父類,可以盡量提高靈活性,如匹配List
通配符使用的場景
把參數變量看作兩類:
1、『in』提供給方法內部使用,即傳入數據。
2、『out』提供給方法外部使用,即傳出數據。
利用WildcardCapture特性,通配符使用的場景為:
1、『in』使用上界通配符
2、『out』使用下界通配符
3、『in』可以使用Object的方法,使用無界通配符
4、即用作『in』,又用作『out』的,不使用通配符
泛型的限制
不能用primitive類型實例化泛型。如:Pair
不能實例化參數類型。如:newE();
不能定義類的靜態類型字段是參數類型。如:privatestaticTos;
參數類型不能使用instanceof和類型轉換。如:listinstanceofArrayList
不能創建參數化類型數組。如:List
不能Create,Catch,或者Throw參數化類型對象。如:classMathException
重載方法不能使用參數化類型被擦除后擁有同樣的原生類型。如:
publicvoidprint(Set
publicvoidprint(Set
被編譯擦除后是一樣的publicvoidprint(SetstrSet){}
以上就是動力節點Java培訓機構小編介紹的“Java基礎教程:java泛型教程”的內容,希望對大家有幫助,如有疑問,請在線咨詢,有專業老師隨時為你服務。
0基礎 0學費 15天面授
有基礎 直達就業
業余時間 高薪轉行
工作1~3年,加薪神器
工作3~5年,晉升架構
提交申請后,顧問老師會電話與您溝通安排學習