powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / Не хочет итерировать foreach
14 сообщений из 14, страница 1 из 1
Не хочет итерировать foreach
    #38955537
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что-то не могу сообразить, почему так?


Код: 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
Не хочет итерировать foreach
    #38955566
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто-то в обход генерикам засунул в Object в ArrayList.
...
Рейтинг: 0 / 0
Не хочет итерировать foreach
    #38957689
DoSOfRedRiver
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz,

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

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

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

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

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

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

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

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


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


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