泛型的萬用字元,上限,下限以及泛型巢狀

2021-07-11 04:51:32 字數 1567 閱讀 3496

1.萬用字元

?:表示型別不確定,只能用於宣告變數或者形參上,不能用在建立泛型類,泛型方法和介面上

public static void main(string args) 

public static void test(list<?> list)

2.上限

extends :泛型的上限,<=(即子類或自身)

首先給出乙個繼承鏈: 

fruit

/     \

class fruit

}

然後就可以測試extends,注意這裡的泛型必須為fruit類或者它的子類

public static void main(string args) 

static class test

extends和萬用字元?一起使用

public static void main(string args) 

public static void test(list<? extends fruit> list)

需要注意的是,在test方法中,不能往list中新增物件,比如我寫

list.add(new fruit());這是會報錯的,為了保證向下相容的一致性,繼承鏈不斷增加,這裡不能新增物件

3.下限

super :指定的型別不能小於操作的類,>=(父類或者自身)

public static void main(string args) 

}

4.泛型巢狀

定義兩個泛型類,myclass類的泛型就是student類,而student類的泛型是string類

class student

public void setscore(t score)

}class myclass

public void setcls(t cls)

}public static void main(string args)

如上就實現了泛型的巢狀,在hsahmap中對鍵值對進行便利的時候,也利用了泛型的巢狀

public static void main(string args) 

}

5.其他問題

第一,泛型沒有多型

public static void main(string args)

第二,泛型沒有陣列

public static void main(string args)

泛型 上限與下限

listextendsfruit list new list中為什麼不能加入fruit類和fruit類的子類呢,原因是這樣的 listfruit 表示上限是fruit,下面這樣的賦值都是合法的 listextendsfruit list1 newarraylist listextendsfruit ...

java泛型1(泛型上限下限巢狀)

extends 泛型的上限 即子類 1.一般用於限制操作 2.不能使用者新增資料操作上,一般都是讀取操作 3.規則 list list 不能存放 list因為它等同於list super 泛型的下限 即父類 1.一般用於限制操作 2.能使用者新增資料操作上,不能新增父物件 3.規則 不能存放 lis...

泛型(二)之上限與下限

author lixueni 泛型上限實現 1.泛型類的上限 2.泛型方法的上限 3.引數的泛型上限 class upper 2.2 設定上限的泛型方法。public e say e e 3.1 引數的泛型上限 對於本類upper而言 public void show upper upper 3.2...