java如何迭代泛型映射
我想为包含泛型映射的泛型类创建一个clone()方法,但我一直在迭代映射的入口集。以下是重要的部分:
private Map<Object, ObjectWrapper<E>> map = new ConcurrentHashMap<Object, ObjectWrapper<E>>();
for (Map.Entry<Object, ObjectWrapper<E>> entry: map.entrySet()){
....
}
编译器错误如下:
[ERROR] found : java.util.Map.Entry<java.lang.Object,abc.ObjectWrapper<E>>
[ERROR] required: java.util.Map.Entry<java.lang.Object,abc.ObjectWrapper<E>>
在我看来是一样的:)
我可以通过迭代键来做这些事情,并在循环中检索值,但我会在Sonar上遇到麻烦。
我已经试过了地图的效果。entrySet()指向许多内容(如类似主题中建议的^{
编辑: 问题是在类和方法中都使用泛型参数。 以下是SSCE(不工作),供将来参考:
public class Test<E> {
private Map<Object, ObjectWrapper<E>> map = new ConcurrentHashMap<Object, ObjectWrapper<E>>();
public <E> Test<E> test(){
for (Map.Entry<Object, ObjectWrapper<E>> entry: map.entrySet()){
}
return null;
}
private static class ObjectWrapper<T>{
}
}
# 1 楼答案
以下由部分代码构建的代码在java版本1.6.0_24中对我有效,没有任何错误
其编译和执行日志: