1. 程式人生 > 其它 >泛型-萬用字元

泛型-萬用字元

什麼是萬用字元

顧名思義 所有都能匹配的一種符號

分類

<? 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父類

即使再小的帆也能遠航