2016-08-12 2 views
1

Я столкнулся некоторые проблемы при преобразовании списка в списокКак преобразовать список <?> в список <className>

List<ContentDes> contentDes_ls = new ArrayList<ContentDes>(); 
     logger.info("in getContentDes "); 

     List<?> ls = ho.getResultListByLimit(sql,limit); 
     contentDes_ls = (List<ContentDes>)ls; 
    logger.info(" size of content "+contentDes_ls.size()); 
    for (ContentDes contentDes : contentDes_ls) { 
     logger.info(contentDes.getPricetag()); 
     logger.info(contentDes.getPrv()); 
    } 

Его работал хорошо, когда я получаю размер List<SomeClass> но когда я доступ к геттер и сеттер SomeClass I получил исключение

Выход:

size of content 2 

java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to com.SomeClass] 
+1

Общий тип не может непосредственно выполнять класс. Вы можете перебирать List с помощью Object, и с этим судить класс по instanceof и выполнять класс-литье. – MageXellos

ответ

3

SomeClass не упоминается anywher e в вашем коде, поэтому я предполагаю, что вы имеете в виду ContentDes.

Похоже, что ваш список не содержит экземпляров ContentDes. Исключение указывает, что элементы вместо типа Object[]. Это вызывает исключение ClassCastException при попытке перебора элементов в качестве ContentDes.

+0

@ marthursson: вы правы .. спасибо за помощь Операция getResultListByLimit (sql, limit): Список ls_obj = session.createQuery (query) .setMaxResults (limit) .list(); есть ли способ прямого преобразования этого результата в список Один из методов, который я знаю, это перечислить список , используя для каждого цикла создать объект ContentDes, а затем установить это значение, используя метод setter класса ContentDes, а затем добавить в список

+0

Когда вы отсылаете список из списка в список , вы в основном говорите компилятору «Не волнуйтесь, я уверен, что список содержит объекты этого типа». Если они не относятся к этому типу, нет способа магически перевести систему в объекты - вам нужно будет написать для этого явный код. Теперь причина, почему список не содержит экземпляры ContentDes, - это другой вопрос. Из вашего комментария видно, что это проблема, связанная с гибернацией, которая будет не по теме для текущего вопроса. – marthursson

Смежные вопросы