Почему я теряю информацию о типе?
Я нашел что-то интересное, что случилось с Картами, типами и дженериками. Следующий код:
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
вдруг это Объект. Или я ошибаюсь?