泛型通配符

public static void main(String[] args) {
Dd d = new Dd();
List<String> l1 = new ArrayList<String>();
d.test(l1);

List<Integer> l2 = new ArrayList<Integer>();
d.test(l2);

List<C1> lc = new ArrayList<C1>();
d.test1(lc);

List<D1> ld = new ArrayList<D1>();
d.test1(ld);

List<A1> la = new ArrayList<A1>();
d.test2(la);

List<B1> lb = new ArrayList<B1>();
d.test2(lb);

List<IA> lia = new ArrayList<IA>();
d.test3(lia);

//d.test3(la); la不是IA的实现类
}

static class Dd{

public void test(List<?> list){}//test方法需要一个list集合的参数,不确定list集合中到底是存的数据类型是什么

public void test1(List<? extends C1> list){}//list参数的元素数据类型是在C1及其子类

public void test2(List<? super C1> list){}//list参数的元素类型是在C1及其父类

public void test3(List<? extends IA> list){} //list参数的元素数据类型是IA实现类
}
class A1{}
class B1 extends A1{}
class C1 extends B1{}
class D1 extends C1{}
interface IA {}
class IAImpl implements IA{}
}
posted @ 2022-03-12 16:26  SmallPepsi  阅读(30)  评论(0)    收藏  举报