<?>不允许您在列表中添加对象。请参阅下面的程序。这是我们传递给method的特定列表类型
<?>。
特定方式,列表是使用特定类型创建的,并传递给
<?>method
listAll。不要与 单词 混淆
specific。
具体可以是任何普通对象,例如Dog,Tiger,String,Object,HashMap,File,Integer,Long ....并且列表是无穷的。
JLS力量
<?>的方法 不 执行 添加 任何
irrelevant objects名为
<?>方法一旦你定义
_(在不调用方法中定义
called-listAll)_包含列表
specific type对象。
这就像在
<?>说 “别碰我”。
public static void listAll(linkedList list) { list.add(new String()); //works fine for(Object obj : list) System.out.println(obj);}public static void listAll(linkedList<?> list) { list.add(new String()); //compile time error. only 'null' is allowed. for(Object obj : list) System.out.println(obj);}现在让我们看一下不同的情况。当我们声明特定类型(如Dog,Tiger,Object,String
.....)时,会发生什么。让我们将方法更改为
specific type。
public static void listAll(linkedList<String> list)// It is now specific type, 'String'{ list.add(new String());//works fine. Compile time it knows that 'list' has 'String' for(Object obj : list) System.out.println(obj);}


