作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
Java 集合中 addAll(..) 方法的正确参数类型是什么?如果我这样做:
List<? extends Map<String, Object[]>> currentList = new ArrayList<Map<String, Object[]>>();
Collection<HashMap<String, Object[]>> addAll = new ArrayList<HashMap<String, Object[]>>();
// add some hashmaps to the list..
currentList.addAll(addAll);
我知道我需要初始化这两个变量。但是,我收到一个编译错误(来自 eclipse):
Multiple markers at this line
- The method addAll(Collection<? extends capture#1-of ? extends Map<String,Object[]>>) in the type List<capture#1-of ? extends Map<String,Object[]>> is not applicable for the arguments (List<capture#2-of ? extends
Map<String,Object[]>>)
- The method addAll(Collection<? extends capture#1-of ? extends Map<String,Object[]>>) in the type List<capture#1-of ? extends Map<String,Object[]>> is not applicable for the arguments
(Collection<HashMap<String,Object[]>>)
我做错了什么?
最佳答案
替换extends
通过 super
.
addAll()
本身需要一个 ? extends T
参数,当 T
时那将不起作用是? extends Map<K, V>
.随着变化,它将变得有效 ? extends ? super Map<K, V>
.
但是,最好还是删除那个 ? extends
(或 ? super
)。在这种特殊情况下这是多余的。只需使用 List<Map<String, Object[]>>
. addAll()
然后将有效地采取 ? extends Map<String, Object[]>>
.
关于Java 泛型和 addAll 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2701630/
我是一名优秀的程序员,十分优秀!