Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Помогите с generic 
:(
    Опции темы
unkis
Дата 8.1.2010, 18:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 802
Регистрация: 8.9.2004

Репутация: нет
Всего: 1



Ребята хочу реализовать следующее.

Есть списки с классами скажем:

Код

List<Class1> c1 ...;
List<Class2> c2 ...;
.....
List<ClassN> cn ...;


каждый из этих классов имплементирует следующий интерфейс 

Код

public interface Interface<T> {
    
    T getId();

}


так вот теперь хочу написать метод который списков классов 

Код

List<ClassN>


конвертирует в список типа T 

Код

List<T>
 

тоесть что-то типо такого.

Код


List<Long> longList = convert(c1);


Как такое реализовать?



Это сообщение отредактировал(а) unkis - 8.1.2010, 20:01


--------------------
www.unkis.com
PM MAIL WWW   Вверх
ivg
Дата 9.1.2010, 22:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Autonomous R&D
**


Профиль
Группа: Участник
Сообщений: 686
Регистрация: 8.2.2006
Где: Екатеринбург

Репутация: 33
Всего: 81



Код

interface Interface<T> {
    T getId();
}

class Class1 implements Interface<String> {
    
    ...
    
    public String getId() {
        return this.id;
    }
}

class Class2 implements Interface<Long> {
    
    ...
    
    public Long getId() {
        return this.id;
    }
}

public class Test {

    public static <T, CL extends Interface<T>>
    List<T> convert(List<CL> cl) {
        List<T> result = new ArrayList<T>(cl.size());
        for (Interface<T> inf : cl) {
            result.add(inf.getId());
        }
        return result;
    }
}

PM MAIL   Вверх
unkis
Дата 10.1.2010, 23:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 802
Регистрация: 8.9.2004

Репутация: нет
Всего: 1



Цитата(ivg @ 9.1.2010,  20:38)
Код

interface Interface<T> {
    T getId();
}

class Class1 implements Interface<String> {
    
    ...
    
    public String getId() {
        return this.id;
    }
}

class Class2 implements Interface<Long> {
    
    ...
    
    public Long getId() {
        return this.id;
    }
}

public class Test {

    public static <T, CL extends Interface<T>>
    List<T> convert(List<CL> cl) {
        List<T> result = new ArrayList<T>(cl.size());
        for (Interface<T> inf : cl) {
            result.add(inf.getId());
        }
        return result;
    }
}

спасибо то что нужно, а как вызватьправильно такой метод?


--------------------
www.unkis.com
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
javastic
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0644 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.