我创建了一个像这样的语法的数组列表:
List<?> obj = new ArrayList<Object>();
如果我尝试添加一个新对象或任何对象(例如 String.它给了我编译错误:
obj.add(new Object());
The method add(capture#1-of ?) in the type List<capture#1-of ?> is not applicable for the arguments (Object)
我可以在 obj
中添加哪些对象?.
最佳答案
您只能添加 null
在 List
声明:
List<?> obj = ...
否则你可能会破坏类型安全,因为这是合法的:
List<?> anyList = ...;
List<Integer> integerList = ...;
anyList = integerList;
这也是合法的:
List<Integer> integerList = ...;
foo(integerList);
void foo(List<?> anyList) {
...
}
如果您可以在 List<?>
中添加任何内容例如 String
, integerList
引用的列表对象不仅不会包含 Integer
不再。
在 List
中添加任何元素,只需使用 Object
类型:
List<Object> obj = ...
关于Java - 使用通配符列表创建数组列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51347669/