java documentation解释了使用Object作为类型参数与使用和无界通配符(?)之间的区别,使用以下代码示例:
public static void printList(List<Object> list) {
for (Object elem : list)
System.out.println(elem + " ");
System.out.println();
}
和
public static void printList(List<?> list) {
for (Object elem: list)
System.out.print(elem + " ");
System.out.println();
}
它说第一个例子无法实现打印任何类型列表的目标。它只能打印对象列表;它无法打印List<Integer>
,List<String>
,List<Double>
等,因为它们不是List<Object>
的子类型。
但是Integer,String和Double肯定是Object的子类型?是不是所有东西都从Java中的Object继承?