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
}
}