Akshit Gupta Ответов: 1

Приведение типа итератора Java в значения hashmap


Зачем нам нужно вводить кастовый итератор в Java? Например:-
HashMap<Integer,Integer> hm = new HashMap<Integer,Integer>();
hm.put(1,3);
hm.put(2,6);
hm.put(3,7);
Iterator it = hm.values().iterator();
while(it.hasNext())
{
ans += it.next(); // Raises an error
}
Но если я обновлю свой код до:
Iterator<Integer> it = hm.values().iterator();// works fine 
Почему итератор не приводит тип hm.values() к целому числу?

Что я уже пробовал:

Итерация по hashmap.values() в Java

1 Ответов

Рейтинг:
0

Richard MacCutchan

То Iterator необходимо знать, с какими объектами ему приходится иметь дело, точно так же, как HashMap должен знать. Если тип не указан, то Iterator возвращает object по звонку в next(), который затем должен быть приведен к своему реальному типу.