Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Java: Общие вопросы > Помогите с generic


Автор: unkis 8.1.2010, 18:21
Ребята хочу реализовать следующее.

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

Код

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);


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


Автор: ivg 9.1.2010, 22: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;
    }
}

Автор: unkis 10.1.2010, 23:27
Цитата(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;
    }
}

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

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)