powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / генерики в цикле
7 сообщений из 7, страница 1 из 1
генерики в цикле
    #38896775
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть класс и методы для работы с этим классом.

Код: java
1.
2.
3.
4.
5.
6.
7.
class Column<T> {
...
}


public <T> T getStringToObject(Column<T> column, String value);
public <T> void set(Column<T>, T value);



Я могу написать
Код: java
1.
set(new Columnt<Integer>,getStringToObject(column,"10"))


здесь все хорошо и генерики выполняют свою работу.

теперь стоит задача выполнить данную операцию в цикле

Код: java
1.
2.
3.
for (Column column : columns) {
  set(column,getStringToObject(column,valueMap.get(column.columnName)); // здесь ошибка компиляции
}


можно решить проблему дополниетльным методом

Код: java
1.
2.
3.
4.
5.
6.
7.
for (Column column : columns) {
  set2(column,valueMap.get(column.columnName)); 
}

public <T> void set2(Column<T> column,String value) {
  set(column,getStringToObject(column,value);
}



можно как нибудь обойтись без 2-го метода?
...
Рейтинг: 0 / 0
генерики в цикле
    #38896876
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Циклы тут не при чем вообще. Вы для переменной columns где-то просрали тип генерика. Если бы вы читали ошибки компилятора или предупреждения от IDE, то знали бы это.
...
Рейтинг: 0 / 0
генерики в цикле
    #38896908
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,
Код: java
1.
List<Column> columns = new LinkedList<Column>();



вот что прописано для columns.

что вы предлагаете прописать в виде генерика?
...
Рейтинг: 0 / 0
генерики в цикле
    #38896962
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
olzhas,

Конкретный тип
Код: java
1.
List<Column<String>> columns = new LinkedList<>();


Или wildcard
Код: java
1.
List<Column<?>> columns = new LinkedList<>();


Или генерик, если он есть в контексте
Код: java
1.
List<Column<T>> columns = new LinkedList<>();



Мы же не знаем что у вас там.
...
Рейтинг: 0 / 0
генерики в цикле
    #38896970
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя, если у вас columns - гетерогенная коллекция, то ни о каком контроле типов значений речи быть не может, ведь все типы разные. Поэтому хорошо бы понять для чего именно эти методы написаны, так как указанный код не предназначен для решения проблемы установки значений в цикле.
...
Рейтинг: 0 / 0
генерики в цикле
    #38896994
olzhas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Blazkowicz,

Да у меня в columns хранятся разные типы. Поэтому я использую List<Column>.

Ко мне приходит Map<String,String> где ключ - это название колонки, а значение - значение колонки.
функция getStringToObject конвертирует строку в объект в зависимости от типа колонки.
функция set устанавливает это значение.

при использования цикла я не могу использовать генерики, так как колонки разные, но я могу вызвать функцию set2 с проверкой соответствия типов и она нормально скомпилируется.

хотелось бы избавиться этот этой второй функции. Хотя боюсь это не возможно сделать.
...
Рейтинг: 0 / 0
генерики в цикле
    #38897744
Dmitry Eliseev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
olzhas,

Код: java
1.
2.
3.
for (Column<?> column : columns) {
  set(column,getStringToObject(column,valueMap.get(column.columnName));
}
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / генерики в цикле
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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