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