定义了通配符的集合是具体类型集合的父类型:
public void sort(List<?> dataList)
此方法可如此调用
List<String> strList = new ArrayList<>();
List<Integer> intList = new ArrayList<>();
sort(strList);
sort(intList);
但如果方法如下定义:
public void sort(List<Object> dataList)
则无法像上面一样调用,原因是集合不是协变类型,而通配符是所有集合类型的父类,所以可以通用。