java泛型<? extends E> 有上限萬用字元與<? Super E>有上限萬用字元
阿新 • • 發佈:2018-12-20
萬用字元?,?表示佔位,表明將來使用的時候在指明型別
- <?>無限定的萬用字元, 是讓泛型能夠接受未知型別的資料
- <? extends E> 有上限萬用字元,能夠接受指定類及其子類型別的資料,E就是該泛型的上邊界
-
- 注意:這裡不僅繼承了父類E的子類,也可以代指顯現了介面E的類
-
- <? super E>:有下限的萬用字元。能夠指定其父類型別的資料,E就是該泛型型別的下邊界。
- 注意:你可以為一個泛型指定上邊界或者下邊界,但是不能同時指定上下邊界
與<T>型別比較
- 比起<T>型別,<?>萬用字元不需要定義型別,傳入的預設為Object,所以在方法返回值使用<?>需要將Object向下轉型為需要的型別
- 可以直接在類中定義靜態方法,因為其<?>的型別預設為Object,是確定的型別,不需要像<T>要在方法返回值之前進行定義
-
public static void main(String[] args) { List<Person1> personList = new ArrayList<>(); personList.add(
<? Super E>有上限萬用字元
- 只能傳遞有E 及其父類到上限萬用字元中