powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / как узнать, какие объекты содержит List
5 сообщений из 5, страница 1 из 1
как узнать, какие объекты содержит List
    #38420901
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Задача:
Надо создать такой метод, который в зависимости от неких условий заполняет, переданный в качестве параметра контейнер, поддерживающий интерфейс List. Проблема в том, что иногда надо возвращать List<String>, а иногда List<MyPOJO>. При этом нет гарантий, что в будущем не придется возвращать например List<Integer> или List<еще_какой_то_объект>.
Кроме того, надо все это оформить в виде интерфейса.


Я придумал только
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
   public void fillList (List<?> conteiner, Class<?> conteinerElement) {
         if (conteinerElement == String.class) {
            // Заполняем как List<String>
         } else if (conteinerElement == MyPOJO.class) {
          // Заполняем как List<MyPOJO>
         } else {
            // Возбуждаем ошибку
         }

    }



Есть ли какой-то способ узнать какой объект содержится внутри List-а, или эту задачу вообще подругому надо решать?

Люблю галеры - работящий коллектив, романтика мужского труда. Стоишь на мостике в пене брызг и эдак поворотясь:
- Голубчик! Утроить количество ударов - Али-паша уходит...
...
Рейтинг: 0 / 0
как узнать, какие объекты содержит List
    #38420913
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Напишите Test Case этого метода. Потому что важно не то что делает метод, а то как и для чего вы планируете его использовать.

Чтобы сильнее приблизить OOP, нужно отделить логику, которая связана со списком от той которая связана с типом элемента.
То что связано со списком, остаётся в методе. Ведь это метод для списка.
А то что связано с типом, прячется за общим интерфесом. Например вы хотите заполнить массив новыми экземплярами

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
   public void <T> fillList (List<T> container, TypeFactory<T> factory, int length) {
       while(i > 0){
             container.add(factory.createInstance());
             i--;
       }
    }

    List<String> list = fillList(new List<String>(), new TypeFactory<String>(){
             public String createInstance(){
                 return new String();
             }
      }, 10);
...
Рейтинг: 0 / 0
как узнать, какие объекты содержит List
    #38420952
Maxifly
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это должен быть некий интерфейсный метод - я обращаюсь к другой подсистеме - она для меня черный ящик. Каким образом она будет создавать объекты, которые будут помещаться в контейнер, откуда их будет брать и как заполнять - я не знаю. Я только должен передать ей контейнер, который содержит объекты определенного типа.

Или может стоит сделать два метода:
Первым я спрашиваю "При таких условиях объекты какого типа ты мне будешь возвращать?"
А во втором - уже предоставляю контейнер и запрашиваю эти объекты.
...
Рейтинг: 0 / 0
как узнать, какие объекты содержит List
    #38420987
Фотография dmitriyche
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Try these versions
Код: java
1.
2.
3.
    public <T> void fillList(List<? extends T> container, Class<? extends T> clazz) {
        // Your conditions go here
    }


Код: java
1.
2.
3.
    public <T> void fillList(List<? extends T> container) {
        // Your conditions go here
    }
...
Рейтинг: 0 / 0
как узнать, какие объекты содержит List
    #38421601
Troglodit
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Можно создать
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
private Map<Class,FillHandler> map=new HashMap(){....}
public void fillList (List<?> conteiner, Class<?> conteinerElement) {
FillHandler handler=map.get(conteinerElement);
if (handler==null) {
//Ошибка
}
else {
handler.handle(conteiner);
}
}
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / как узнать, какие объекты содержит List
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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