kit*_*ttu 6 java generics unbounded-wildcard
根据链接中提供的信息,它说:
重要的是要注意
List<Object>
并且List<?>
不一样.您可以将Object或Object的任何子类型插入到List<Object>
.但是你只能在一个插入中插入nullList<?>
.
List<?>
只null
插入时使用有什么用?
例如,
methodOne(ArrayList<?> l):
我们可以将此方法用于ArrayList
任何类型,但在方法中我们不能向List添加任何东西,除了null
.
l.add(null);//(valid)
l.add("A");//(invalid)
Run Code Online (Sandbox Code Playgroud)
Mar*_*oun 11
当列表(或集合)是未知类型时,您使用无界通配符.
就像教程所说的那样,当你想获得某些列表的信息时会使用它,比如打印它的内容,但是你不知道它可能包含的类型:
public static void printList(List<?> list) {
for (Object elem: list)
System.out.print(elem + " ");
System.out.println();
}
Run Code Online (Sandbox Code Playgroud)
当您想要将值插入列表时,不应该使用它,因为唯一允许的值是null
,因为您不知道它包含的值.