2013-06-10 2 views
0

Ниже мой код в Java, в классе с именем DnsTime:Получения ClassCastException при доступе элементов списка по отдельности в Java

List<DnsTime> list = new ArrayList<DnsTime>(); 
String selUrl = "http://www.abc.com"; 
String query = "select dns_time,update_time from dns_time where url=?"; 
list = session.createSQLQuery(query).setString(0,selUrl).list(); 
/* getting dns_time and update_time from each record(row) using 
    for inside another for loop */ 

for (int i = 0; i < list.size(); i++) { 
    List<DnsTime> innerlist = (List<DnsTime>) list.get(i); 
    for (int j = 0; j < innerlist.size(); j++) { 
     System.out.println(innerlist.get(j)); 
    } 
} 

Это программный код в Java для получения списка элементов из списка после выполнения моего запроса , Я использую Hibernate. Мой запрос работает, но проблема заключается в получении элементов списка: я получаю исключение.

java.lang.ClassCastException: не может бросить java.lang.Object к java.util.List

Как получить элементы списка по отдельности из каждого списка строки?

+0

Можете ли вы предоставить трассировку стека. –

ответ

4

Ваше объявление о первоначальном списке не является хорошим; он должен быть:

List<List<DnsTime>> list = new ArrayList<List<DnsTime>>(); 

Side Примечание: Ваш следует использовать Еогеасп петли:

for (List<DnsTime> subList: list) 
    for (DnsTime time: subList) 
     System.out.println(time); 

EDIT: Тем не менее, я подозреваю, что это не настоящая проблема. Несколько строк позже есть:

list = session.createSQLQuery(query).setString(0,selUrl).list(); 

Теперь, что что вернуться?

+0

все еще получает тот же ClassCastException.Unable для того чтобы отличить java.lang.object к java.util.List – user2365917

+0

В той же строке? – fge

+0

yes.error at for (Список subList: list) – user2365917

1

Вы пытаетесь передать объект/запись списка в список. Вы можете сделать это, только если у вас есть список списков, проблема эта линия:

List<DnsTime> innerlist=(List<DnsTime>)list.get(i); 

list.get(i) даст вам объект DnsTime, а не список DnsTime объявления Ваш список объявлен List<DnsTime> list=new ArrayList<DnsTime>();

В зависимости от того, что вы получаете из базы данных, вам нужно либо правильно объявить список, либо изменить выбранный элемент.

+0

Тогда как я могу решить свою проблему. Пожалуйста, помогите мне. Переписанный список содержит dns_time типа double и update_time типа timestamp.Plese help me – user2365917