当前位置: 首页 > 知识库问答 >
问题:

从迭代器next方法获取ClassCastException

葛桐
2023-03-14
List<CustomerList> aaData = customerlistDaoimpl.getCustomerList();

/*
 * putting data in a JSON form that DataTables recognizes
 */
String data = "{\"sEcho\": 3, \"iTotalRecords\": " + count + ",\"iTotalDisplayRecords\": " + count + ",\"aaData\": [ ";
Iterator<CustomerList> itr = aaData.iterator();
while(itr.hasNext()){
    CustomerList cl = (CustomerList) itr.next();
    data += "[\"" + cl.getName() + "\",\"" + cl.getAddress() + "\",\"" + cl.getZipcode() + "\",\"" + 
    cl.getPhone() + "\",\"" + cl.getCity() + "\",\"" + cl.getCountry() + "\",\"" + cl.getNote() + "\" ] ";
    count++;
}
data += "]}";
@SuppressWarnings("unchecked")
@Override
public List<CustomerList> getCustomerList() {
    List<CustomerList> cuList = null;
    Session session = null;

    try{
        session = sessionfactory.openSession();
        session.beginTransaction();         
        cuList = session.createSQLQuery("select * from customer_list").list();      
        session.getTransaction().commit();
    }catch (RuntimeException e){
        System.out.println(e.getMessage());
    }
    finally
    {
        if(session != null){
            session.close();                
        }
    }

    return cuList;
}

回溯的痕迹

对于路径[/sptestjs]的上下文中的servlet[sptestjs]的servlet.servelet.service()抛出异常[请求处理失败;嵌套异常是java.lang.ClassCastException:[ljava.lang.Object;无法强制转换为根原因java.lang.ClassCastException:[ljava.lang.Object;无法强制转换为com.sptestjs.implementation.CustomerList;无法强制转换为com.sptestjs.implementation.Controller.homeController.getCustomerList(Sun.Reflect.DelegatingMethodAccessorImpl.Invoke(未知源)

我确实找到电话了

SQLQuery cuSQLQuery = session.createSQLQuery("select * from customer_list");

返回一个SQLQuery实例,其列表类型为对象元素的ArrayList,其中

Query cuQuery = session.createQuery("from customer_list");

返回null

共有1个答案

傅峻
2023-03-14

从迭代器next方法获取ClassCastException

这意味着您AADATA实际上不是列表 您在错误地更改其类型的地方有类型擦除。如果您仔细查看ClassCastException,它会告诉您组件类型到底是什么。

ClassCastException:[Ljava.lang.Object;不能强制转换为com.sptestjs.implementation.customerList

List<Object[]> cuList = session.createSQLQuery("select * from customer_list").list(); 
 类似资料:
  • 问题内容: 我对迭代器的方法有疑问。如果我的代码包含以下内容(大小为4),请执行以下操作: 在第一次迭代时,迭代器开始指向索引为0的元素?还是喜欢“指数-1”? 我问,因为据我所知,该方法返回集合中的下一个元素。 因此,如果在第一次迭代时迭代器在被调用时从索引0开始,它将返回索引1的元素,而我将无法对索引0的元素做任何事情? 问题答案: 可以将其视为两步过程。首先,它获得迭代器中的下一个项目,然后

  • 问题内容: 从Python 2.6的迭代器中获取最后一项的最佳方法是什么?例如说 从中获取最短代码/最干净的方法是什么? 我可以这样做,但是效率似乎不高: 问题答案:

  • 我将“User class”类型的变量转换为JsonNode,如下所示: 我需要迭代地循环该节点的每个元素,并获取其键和值,例如:“name”:John,“lastname”:H等等 但是当我做iterator.next()时,我直接得到约翰值,没有键。我需要同时得到键和值。我如何在JsonNode类型的迭代器中访问键?我做错了什么,或者有没有更好的方法来迭代这些属性?

  • 问题内容: 考虑: 因此,按预期方式,通过更改同一对象来处理迭代器。 在这种情况下,我希望: 跳过每第二个元素:对的调用应使迭代器前进一次,然后循环进行的隐式调用应使它第二次进行-并将第二次调用的结果分配给。 没有。该循环将打印列表中的 所有 项目,而不会跳过任何项目。 我的第一个想法是可能发生这种情况,因为循环调用了它所传递的内容,并且这可能会提供一个独立的迭代器-事实并非如此。 那么,为什么在

  • 给定这样一个对象: 用法如下: 我想用更面向对象的东西来代替这个while循环,比如: 因此,我可以很容易地,例如,使匹配流,坚持使用流畅的API等。 问题是,我不知道也找不到更简洁的方法来创建这个流或迭代器。像上面这样的匿名类对我来说太冗长了。 我曾希望在jdk中找到像或这样的东西,但到目前为止还没有运气。毫无疑问,像apache commons或番石榴这样的库为此提供了一些东西,但让我们说我不