十年網(wǎng)站開發(fā)經(jīng)驗(yàn) + 多家企業(yè)客戶 + 靠譜的建站團(tuán)隊(duì)
量身定制 + 運(yùn)營(yíng)維護(hù)+專業(yè)推廣+無憂售后,網(wǎng)站問題一站解決
本篇文章給大家分享的是有關(guān)java泛型中的上界和下界是什么,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供巴馬網(wǎng)站建設(shè)、巴馬做網(wǎng)站、巴馬網(wǎng)站設(shè)計(jì)、巴馬網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁(yè)設(shè)計(jì)與制作、巴馬企業(yè)網(wǎng)站模板建站服務(wù),10年巴馬做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。
泛型中上界和下界的定義
上界 extend Fruit>
下界 super Apple>
上界和下界的特點(diǎn)
上界的list只能get,不能add(確切地說不能add出除null之外的對(duì)象,包括Object)
下界的list只能add,不能get
import java.util.ArrayList;
import java.util.List;
class Fruit {}
class Apple extends Fruit {}
class Jonathan extends Apple {}
class Orange extends Fruit {}
public class CovariantArrays {
public static void main(String[] args) {
//上界
List extends Fruit> flistTop = new ArrayList();
flistTop.add(null);
//add Fruit對(duì)象會(huì)報(bào)錯(cuò)
//flist.add(new Fruit());
Fruit fruit1 = flistTop.get(0);
//下界
List super Apple> flistBottem = new ArrayList();
flistBottem.add(new Apple());
flistBottem.add(new Jonathan());
//get Apple對(duì)象會(huì)報(bào)錯(cuò)
//Apple apple = flistBottem.get(0);
}
} 這些特點(diǎn)的原因
上界 extend Fruit> ,表示所有繼承Fruit的子類,但是具體是哪個(gè)子類,無法確定,所以調(diào)用add的時(shí)候,要add什么類型,誰(shuí)也不知道。但是get的時(shí)候,不管是什么子類,不管追溯多少輩,肯定有個(gè)父類是Fruit,所以,我都可以用最大的父類Fruit接著,也就是把所有的子類向上轉(zhuǎn)型為Fruit。
下界 super Apple>,表示Apple的所有父類,包括Fruit,一直可以追溯到老祖宗Object 。那么當(dāng)我add的時(shí)候,我不能add Apple的父類,因?yàn)椴荒艽_定List里面存放的到底是哪個(gè)父類。但是我可以add Apple及其子類。因?yàn)椴还芪业淖宇愂鞘裁搭愋停伎梢韵蛏限D(zhuǎn)型為Apple及其所有的父類甚至轉(zhuǎn)型為Object 。但是當(dāng)我get的時(shí)候,Apple的父類這么多,我用什么接著呢,除了Object,其他的都接不住。
所以,歸根結(jié)底可以用一句話表示,那就是編譯器可以支持向上轉(zhuǎn)型,但不支持向下轉(zhuǎn)型。具體來講,我可以把Apple對(duì)象賦值給Fruit的引用,但是如果把Fruit對(duì)象賦值給Apple的引用就必須得用cast
以上就是java泛型中的上界和下界是什么,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。