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


Автор: gelo86 31.8.2010, 12:59
Код

    public List<List<?>> getData() {
        List<List<String>> data = new ArrayList<List<String>>();
        return data;
    }


Почему неработает ?

Автор: Nofate 31.8.2010, 13:19
Наверное, потому что вы обещали вернуть List<List<?>>, а возвращаете List<List<String>> . Верните обещанное =)

Автор: Ryukzak 31.8.2010, 13:26
На сколько я понимаю, ваш пример не работает так как не совпадают типы данных. Попробуйте сделать так:
Код

   public List<List<String>> getData() {
        List<List<String>> data = new ArrayList<List<String>>();
        return data;
    }

Нотация <?> используется в тех ситуациях, когда необходимо сделать обобщения типа данных при вызове метода, но без преобразований типа, что произойдёт при использование <Obejct>.
Подробнее: http://java.sun.com/j2se/1.5/pdf/generics-tutorial.pdf Раздел 4 Wildcards

Автор: gelo86 31.8.2010, 13:54
Цитата(Ryukzak @  31.8.2010,  13:26 Найти цитируемый пост)
Нотация <?> используется в тех ситуациях, когда необходимо сделать обобщения типа данных при вызове метода


А для резултата метода нельзя ? Тот пдф я читал.

Автор: Joss 31.8.2010, 14:26
Или так...
Код

    public List<? extends List<?>> getData() {
        List<List<String>> data = new ArrayList<List<String>>();
        return data;
    }   

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