我想为包含泛型映射的泛型类创建一个 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 的麻烦。我已经尝试将 map.entrySet() 的结果转换为很多东西(就像Set<? extends<Map.Entry<Object, ObjectWrapper<E>>>)
在类似主题中建议的那样,但没有结果:(
编辑: 问题是在类和方法中都使用了泛型参数。供将来参考,这里是 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>{
}
}