Java泛型解析

4、有界泛型

<? extends T>:是指 “ 上界通配符 (Upper Bounds Wildcards) ”

<? super T>:是指 “ 下界通配符 (Lower Bounds Wildcards) ”

如 List<? extends T> 大家以為元素為 T以及其所有子類的對象 的List。其實不是。元素類型 僅指T的某一個不確定的子類,是單一的一個不確定類,沒有具體哪個類。因此不能插入一個不確定的。

List<? super T> 大家以為元素為 T以及其父類的對象 的List。其實不是,元素類型 僅指T的某一個不確定的父類,是單一的一個不確定類(只確定是T的父類),沒有具體哪個類。

因此:

不能往List<? extends T>中插入任何類型的對象。唯一可以保證的是,你可以從中讀取到T或者T的子類。

可以往List<? super T>中插入T或者T子類的對象,但不可以插入T父類的對象??梢宰x取到Object或者Object子類的對象(你并不知道具體的子類是什么)。

如果頻繁支持讀取數(shù)據(jù),不要求寫數(shù)據(jù),使用<? extends T>。即生產(chǎn)者 使用 <? extends T>

如果頻繁支持寫入數(shù)據(jù),不特別要求讀數(shù)據(jù),使用<? super T>。即消費者 使用 <? super T>

如果都需要支持,使用<T>。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容