LINUX.ORG.RU

кстати, кто-бы объяснил..ю

ява 1.5

это не компилируется

        Map xx = new LinkedHashMap(); 

        for (Map.Entry entry : xx.entrySet()) { 
            System.out.println(entry.getKey()); 
        } 


а вот это нормально:

        Map<String, String> xx = new LinkedHashMap<String, String>(); 

        for (Map.Entry entry : xx.entrySet()) { 
            System.out.println(entry.getKey()); 
        } 

WindowsUser ★★
()
Ответ на: комментарий от WindowsUser

Походу все правильно, FOREACH работает только с генериками, а для обычных коллеккций надо юзать

for( Iterator it = xx.entrySet().iterator(); i.hasNext(); ){ Map.Entry entry = ( Map.Entry ) it.next(); }

по-старинке

angryzes
()
Ответ на: комментарий от WindowsUser

> это не компилируется
>
> Map xx = new LinkedHashMap();
>
> for (Map.Entry entry : xx.entrySet()) {
> System.out.println(entry.getKey());
> }
>
>
> а вот это нормально:
>
> Map<String, String> xx = new LinkedHashMap<String, String>();
>
> for (Map.Entry entry : xx.entrySet()) {
> System.out.println(entry.getKey());
> }

Потому что в первом случае у тебя Map.entrySet() возвращает
нетипизированный Set, тип элемента в котором - Object. Так что надо вот
так:

for (Object elem : xx.entrySet()) {
Map.Entry entry = (Map.Entry) elem;
System.out.println(entry.getKey());
}

int19h ★★★★
()
Ответ на: комментарий от int19h

> Потому что в первом случае у тебя Map.entrySet() возвращает
нетипизированный Set, тип элемента в котором - Object

получается, двойной generics Set<Map.Entry<K, V>> entrySet(); обламывается, если внутренние K,V не заявлены?

WindowsUser ★★
()
Ответ на: комментарий от WindowsUser

Считай, что по дефолту он <Object, Object> - так что все работает

angryzes
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.