协方差以上的答案涵盖了大多数情况,但缺少一件事:“?” 在类层次结构中包含“对象”。您可以说String是Object的一种,而Object是?的一种。并非所有对象都匹配Object,但是所有对象都匹配?。int test1(List<?> l) { return l.size();}int test2(List<Object> l) { return l.size();}List<?> l1 = Lists.newArrayList();List<Object> l2 = Lists.newArrayList();test1(l1); // compiles because any list will worktest1(l2); // compiles because any list will worktest2(l1); // fails because a ? might not be an Objecttest2(l2); // compiled because Object matches Object