Java中的萬用字元
一、萬用字元概念
其實.上很多技術點都是為了解決某一問題而出現的,那麼我們在學習的過程中可以先提出問題,然後在使用我們的技術去解決。
DEMO:觀察問題
以上程式碼可以正常執行,但是如果泛型類中的型別改變之後發現了方法中的引數的泛型也需要改變,這就說明了fun方法依賴Person的泛型,這也是耦合度較高的一種體現,此時我們可以在方法的引數中使用萬用字元代替具體的泛型。萬用字元使用“?”即可。
DEMO:萬用字元解決問題
此時使用了“?”在方法中替代具體的泛型型別,之後不管Person中的泛型如何改變,fun 方法都不需要改動,其實萬用字元還有兩個子萬用字元。一個是萬用字元上限,一個是萬用字元下限。
二、萬用字元的上限
1、萬用字元上限: ? extends. 上限 型別。
DEMO:在方法中指定萬用字元的上限
方法方法定義了上限之後:方法只能接受上限型別以及.上限型別的子類型別。除了方法的萬用字元可以定義上限之外類的泛型也可以定義上限。
DEMO:類的泛型上限
類使用了泛型.上限之後例項化子類的時候指定的泛型的具體型別只能是泛型上限本類型別以及泛型上限型別的子類型別。
三、方法萬用字元的下限
定義方式: ? super‘ 下 限型別
DEMO:萬用字元下限型別
使用了萬用字元下限之後:方法只能接受下限型別以及下限型別的父類型別作為泛型具體型別。類泛型有下限嗎?類的泛型是沒有下限的。
總結:
1、使用萬用字元“?”解決了方法對泛型類的依賴
2、萬用字元的.上限“? extends.上限型別”, 方法只能接受上限型別以及上限型別的子類型別,泛型類也可以設定上限。
3、萬用字元下限“?super 下限型別”,方法只能接受下限本類型別以及下限的父類型別,泛型類不可以設定下限。
有完整的Java初級,高階對應的學習路線和資料!專注於java開發。分享java基礎、原理性知識、JavaWeb實戰、spring全家桶、設計模式、分散式及面試資料、開源專案,助力開發者成長!
歡迎關注微信公眾號:碼邦主