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{}
}
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 单元测试从入门到精通