0

下面是我在 Java 中的代码,在一个名为的类中DnsTime

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 中的程序代码,用于在执行我的查询后从列表中获取列表元素。我正在使用休眠。我的查询正在运行,但问题在于获取列表元素:我遇到了异常。

java.lang.ClassCastException:无法将 java.lang.object 转换为 java.util.List

如何从每个列表行中单独获取列表元素?

4

2 回答 2

4

你的初始名单声明不好;它应该是:

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

旁注:您应该使用 foreach 循环:

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

编辑:但是,我怀疑这不是真正的问题。几行之后有:

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

现在,返回的是什么?

于 2013-06-10T07:43:23.133 回答
1

您正在尝试将列表的对象/条目转换为列表。只有当你有一个列表时你才能这样做,问题是这一行:

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

list.get(i) 会给你一个 DnsTime 的对象,而不是一个 DnsTime 的列表,你的列表被声明为List<DnsTime> list=new ArrayList<DnsTime>();

根据您从数据库中获得的内容,您需要正确声明列表或更改获取的项目转换。

于 2013-06-10T07:43:52.413 回答