Я хочу создать метод 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>>
Выглядит так же мне :)
Я могу делать вещи перебором ключей и извлеките значения внутри цикла, но я столкнулся с проблемой сонара. Я попытался литье результата map.entrySet() для многих вещей (как Set<? extends<Map.Entry<Object, ObjectWrapper<E>>>)
как предложено в подобных темах, но без результатов :(
EDIT: Проблемы с использованием универсального параметра . как в классе и метод для дальнейшего использования, вот ВПЧЭ (не работает):
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>{
}
}
Вы можете создать [SSCCE] (http://sscce.org/), поэтому мы можем видеть ошибку для себя? – Jeffrey
Вы еще не объявили 'E', или что-то у вас есть? (Обратите внимание, что итерация по параллельной коллекции может не выполнять именно то, что вы хотите.) –
У вас, вероятно, есть '' как в ваших объявлениях классов, так и в методах, и последний скрывает первое. –
assylias