Почему я теряю информацию о типе?

Я нашел что-то интересное, что случилось с Картами, типами и дженериками. Следующий код:

static {
          Map map = new HashMap ();
          Set <Map.Entry> set = map.entrySet ();
          for (Map.Entry entry : set) {} // fine 
          for (Map.Entry entry : map.entrySet()) {} // compilation error
}

Я получаю ошибку компиляции о несовместимости типов, а именно: «Объект не может быть приведен к записи».

Идеально для удобства

Почему итератор закончилсяentrySet() потерять информацию о типе, если переменная не хранит ее снова?

Типы не должны влиять на тип, так чтоMap.Entry вдруг это Объект. Или я ошибаюсь?

Ответы на вопрос(2)

Ваш ответ на вопрос