class Animal {}
class Dog extends Animal {}
class Cat extends Animal {}
class CollectionDemo {
public static void main(String[] args) {
//Collection<Object> c1 = new ArrayList<Object>();
//Collection<Object> c2 = new ArrayList<Animal>();
//Collection<?> c2 = new ArrayList<Animal>();
/*c2.add(new Animal());
add
(capture<?>)
in Collection cannot be applied
to
(jdk5.generic.Animal)*/
//不能添加元素,不然可能引发错误
/*
* 上限通配泛型
* 可以添加T类型对象或者T子类类型对象
*
* */
/*Collection<?> c1 = new ArrayList<Animal>();;
c1.add(new Animal());
c1.add(new Dog());
//在泛型通配符中,不能给集合对象c1添加元素,因为如果添加成功,可能出现添加元素的类型与c1中元素的实际类型不匹配的问题
Collection<? extends Animal> c2 = new ArrayList<Dog>();;
c2.add(new Animal());
c2.add(new Dog());
//在下限泛型通配符中,不能给集合对象c2添加元素,因为如果添加成功,可能出现添加元素的类型与c1中元素的实际类型不匹配的问题,比如我添加Cat,也是Animal的子类,但却不是Dog类
Collection<? super Animal> c3 = new ArrayList<Animal>();;
c3.add(new Animal());
c3.add(new Dog());
c3.add(new Object());
//在下限泛型通配符中,可以给集合对象c3添加元素,但只能添加Animal的子类或者Animal本身。*/
}
}
集合使用泛型通配符时,对象不能调用add方法
最新推荐文章于 2023-05-15 11:50:31 发布