254 类型通配符

254 类型通配符

为了表示各种泛型List的父类,我们可以使用类型通配符

- 类型通配符:<?>

- 例如,List<?>表示元素类型未知的List,它的元素可以匹配任何类型

- - 这种带通配符的List仅表示它是各种泛型的父类,并不能把元素添加到其中

·

如果不希望List<?>是任何泛型的父类,只希望它代表某一类泛型的父类,可以使用通配符的上限

【通配符上限】

- <?extends类型>

- 例如,List<?extends Number>表示Number类型或者其他子类

【通配符上下限】

- <?super类型>

- 例如,List<?super Number>表示Number类型或者其他父类

--------------------------------------------------------------

package e254;

import java.util.ArrayList;

import java.util.List;

public class GenericDemo {

    public static void main(String[] args) {

//---limit---

        List<?> l1 = new ArrayList<Object>();

        List<?> l2 = new ArrayList<Number>();

        List<?> l3 = new ArrayList<Integer>();//class Integer extends Number extends Object

//---UPPER LIMIT---

//        List<? extends Number> l4 = new ArrayList<Object>();//error!Number extends Object

        List<? extends Number> l5 = new ArrayList<Number>();

        List<? extends Number> l6 = new ArrayList<Integer>();

        

//---LOWER LIMIT---

        List<? super Number> l7 = new ArrayList<Object>();

        List<? super Number> l8 = new ArrayList<Number>();

//        List<? super Number> l9 = new ArrayList<Integer>();//error!Number extends Object

        

    }

}

おすすめ

転載: blog.csdn.net/m0_63673788/article/details/121464285