泛型-萬用字元
阿新 • • 發佈:2021-08-11
什麼是萬用字元
顧名思義 所有都能匹配的一種符號
分類
<? extends T>
(無窮小,T]
必須是T
的子類 或者 其 本身
<? super T>
[T,無窮大)
必須是T
的父類 或者 其 本身
示例
public class test { /** * 有限制條件使用萬用字元 * extends super 區別 */ @Test public void test(){ List<? extends Person> list1 = null; List<? super Person> list2 = null; List<Student> list3 = null; List<Person> list4 = null; List<Object> list5 = null; list1 = list3; list1 = list4; /* * list1 = list5; * Incompatible types. Required: List <? extends com.generci.day02.custom.Person> Found: List <java.lang.Object> * * ? extends Person必須是Person的子類及其本身 * 相當於 <= Person * */ /** * ? super Person * 相當於 >= Person */ // list2 = list3; list2 = list4; list2 = list5; } }
小結
使用類似<T extends Number>
定義泛型類時表示:
泛型型別限定為Number
以及Number
的子類
使用extends
萬用字元表示可以讀 不能寫
使用super
萬用字元表示只能寫 不能讀。
使用類似<T super Number>
定義泛型類時表示:
泛型型別限定為Number
以及Number
的父類