以前你把我烧死了,我必须说我多次搜索这个问题,我仍然无法理解List <Object>和List <?>之间的区别
我读过的所有书都说在Java中,每个类都隐含着Object的子类.
但是我在这里看到了以下代码:
public static void printList(List<Object> list) {
for (Object elem : list)
System.out.println(elem + " ");
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)
这段代码是错误的(故意用于教育目的),根据作者的原因是:
[...]只打印一个Object实例列表; 它不能打印List <Integer>,List <String>,List <Double>等,因为它们不是List <Object>的子类型
解决方案是:
public static void printList(List<?> list) {
for (Object elem: list)
System.out.print(elem + " ");
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)
如您所见,唯一的区别是第一行:
public static void printList(List<Object> list) {
public static void printList(List<?> list) {
Run Code Online (Sandbox Code Playgroud)
这就是我的问题的原因:List <Object>和List <?>之间有什么区别?
毕竟是对象超类的全部与否?
如果有人可以帮我一个简单的解释(我是Java的新手),我将不胜感激.
先感谢您.
java ×1