java - 在 List<?> 中添加一个元素

标签 java generics collections

我创建了这个:

List<?> result = new ArrayList<>();

我正在尝试:

result.add("");

Java 编译器告诉:

The method add(capture#9-of ?) in the type List is not applicable for the arguments (String)

有什么想法吗?我该如何解决?

最佳答案

当有一个 List<?> , 然后 null是您可以添加的唯一引用。所以这应该有效:

 List<?> result = new ArrayList<>();
 result.add(null);

但是,这是不允许的:

 result.add("");

原因是编译器无法完全确定您尝试添加的引用是否与编译时未知的通配符 (?) 类型匹配。

为了允许添加String引用 List ,您应该将其定义为:

List<String> result = new ArrayList<>();
result.add("");

关于java - 在 List<?> 中添加一个元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36332320/

相关文章:

java - 如何在继续之前等待线程结束

Java for 循环优化

Java 泛型 : Array containing generics

java - 如何在android中获取微调器选定的项目?

java - Java 的序列化文件与 C 语言(JNI)中的 `sizeof` 运算符不相等

Java 未经检查的方法调用

java - 泛型的意外行为

c# - 构建可通过标签检索的对象集合

dart - Dart 搜索,从数据模型列表中添加和删除

java - 自 Java5 + 菱形运算符以来初始化通用集合的方法