Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / Не хочет итерировать foreach / 14 сообщений из 14, страница 1 из 1
11.05.2015, 01:18
    #38955537
DoSOfRedRiver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хочет итерировать foreach
Что-то не могу сообразить, почему так?


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
public class TraverseStruct<T> {
    public ArrayList<SubtreePosition>   path;
    
    //.....
}


ArrayList<TraverseStruct> store;

for (TraverseStruct struct : store) {
    //..

    for (SubtreePosition pos : struct.path); //incompatible types: java.lang.Object cannot be converted to SubtreePosition

}



SubtreePosition - enum
...
Рейтинг: 0 / 0
11.05.2015, 08:52
    #38955566
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хочет итерировать foreach
Кто-то в обход генерикам засунул в Object в ArrayList.
...
Рейтинг: 0 / 0
13.05.2015, 15:53
    #38957689
DoSOfRedRiver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хочет итерировать foreach
Blazkowicz,

Неа, нет там такого. Вот я голову и ломал сидел, так и не понял.
...
Рейтинг: 0 / 0
13.05.2015, 16:32
    #38957737
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хочет итерировать foreach
DoSOfRedRiverНеа, нет там такого. Вот я голову и ломал сидел, так и не понял.
Java Runtime Environment с вами не согласно.
...
Рейтинг: 0 / 0
14.05.2015, 12:15
    #38958478
j4you
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хочет итерировать foreach
DoSOfRedRiver,

а чего TraverseStruct то обощенный, а то нет?
...
Рейтинг: 0 / 0
14.05.2015, 12:37
    #38958514
olzhas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хочет итерировать foreach
DoSOfRedRiver,
попробуйте так.
Код: java
1.
2.
for (TraverseStruct<?> struct : store) ..
 
...
Рейтинг: 0 / 0
14.05.2015, 20:08
    #38959188
DoSOfRedRiver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хочет итерировать foreach
olzhas,

Работает. А не расскажите, в чём дело?
...
Рейтинг: 0 / 0
14.05.2015, 20:25
    #38959197
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хочет итерировать foreach
DoSOfRedRiverРаботает. А не расскажите, в чём дело?
Так оно даже не компилировалось?
...
Рейтинг: 0 / 0
14.05.2015, 21:12
    #38959231
DoSOfRedRiver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хочет итерировать foreach
Blazkowicz,

Угу, не компилировалось. Нужно было написать, я чего-то провтыкал на этот счёт.
...
Рейтинг: 0 / 0
15.05.2015, 06:26
    #38959353
olzhas
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хочет итерировать foreach
DoSOfRedRiver,

Я честно говоря не знаю почему, просто у меня была похожая ситуация и я ее так решал.
...
Рейтинг: 0 / 0
15.05.2015, 07:48
    #38959368
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хочет итерировать foreach
DoSOfRedRiverolzhas,

Работает. А не расскажите, в чём дело?

Дело в том что вы в итераторе ожидаете такой тип:
ArrayList<TraverseStruct<SubtreePosition>> store;
А ваш
ArrayList<TraverseStruct> store;
аналогичен
ArrayList<TraverseStruct<Object>> store;

for (TraverseStruct<?> struct : store) - сообщает компилятору что в TraverseStruct лежит path с элементами любого типа. Поэтому его можно спокойно кастить к вашему. О чем всё равно должен быть warning.
...
Рейтинг: 0 / 0
15.05.2015, 10:09
    #38959472
valdemar0204
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хочет итерировать foreach
Интересная особенность джавовских дженеников - если класс параметризирован, но мы начинаем использовать его без параметра, копилятор перестает принимать во внимание ВСЕ параметризиванные типы внутри этого класса, даже те, которые не относятся к параметру самого класса. То есть когда вы написали
Код: java
1.
2.
3.
TraverseStruct struct
struct.path 
}


struct.path вернул вам непараметризованный ArrayList path
Подробнее тут
YouTube Video
...
Рейтинг: 0 / 0
15.05.2015, 14:34
    #38959863
DoSOfRedRiver
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хочет итерировать foreach
Спасибо всем, теперь понятно стало. Почитаю что-нибудь на этот счёт ещё.
...
Рейтинг: 0 / 0
15.05.2015, 15:36
    #38959967
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Не хочет итерировать foreach
DoSOfRedRiverСпасибо всем, теперь понятно стало. Почитаю что-нибудь на этот счёт ещё.
http://www.angelikalanger.com/GenericsFAQ/JavaGenericsFAQ.html
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / Не хочет итерировать foreach / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]