java - 如何解决异常 java.lang.ClassCastException : java. math.BigDecimal 无法转换为 [Ljava.lang.Object;在java中

标签 java casting classcastexception

在我的代码中查询工作正常,但在迭代时它会抛出此错误。

我的代码在这里:

Session session = null;
try{
    Query qu=session.createSQLQuery("select plot_no from house_details where type='duplex'");
    List<Long> li =  qu.list();
    System.out.println("---li---"+li.toString());
    for (Iterator itr = li.iterator(); itr.hasNext();) {
        String plotNo = itr.next().toString();

        if(plotNo.equals("501") || plotNo.equals("520") || plotNo.equals("601"){
            System.out.println("---if---");
            //code here
        }
        else{
            System.out.println("---else---");
            Query qu1 = session.createSQLQuery("select distinct name,houseno from house_details");
            List li1 =  qu1.list();
            for (Iterator itr1 = li.iterator(); itr1.hasNext();) {
                Object[] obj = (Object[]) itr1.next();
                String houseName = (String) obj[0];
                String houseNo = (String) obj[1];
                System.out.println("---houseName--->"+houseName);
            }
    }
}catch(Exception e){
   e.printStackTrace();

}finally {
   if(session!=null){
    session.close();
   }
}

输出:

---li---[501, 0, 101, 101, 114]
---else---
java.lang.ClassCastException: java.math.BigDecimal cannot be cast to [Ljava.lang.Object;

它在 Object[] obj = (Object[]) itr1.next(); 行中显示错误。

我的代码有什么问题?

最佳答案

首先,强制转换:您正在处理列表 li 上的迭代器就好像它是一个数组列表上的迭代器,而实际上它是一个 BigDecimal 列表上的迭代器s。这是li1您应该迭代:

for (Iterator itr1 = li1.iterator() ; itr1.hasNext() ; )
//                     ^

早期发生了另一个错误:

List<Long> li =  qu.list();

应该是

List<BigDecimal> li =  qu.list();

因为查询返回的列表中的对象属于 BigDecimal 类型,正如失败的 Actor 所证实的那样。

关于java - 如何解决异常 java.lang.ClassCastException : java. math.BigDecimal 无法转换为 [Ljava.lang.Object;在java中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36936154/

相关文章:

swift - 无法从子类 Swift 中转换值

python - 如何检测我的 python 类实例是否被转换为整数或 float ?

android - 在平板电脑上膨胀 GridView 时出错

java - 追加对象 OutputStream 时发生 ClassCastException

C++ 在函数中转换指针

java - HeaderElement1_1Impl ClassCastException Java 使用 JDK 而不是 saaj-impl

java.io.IOException : Broken pipe

java - 我的 setCloseoperation(JFrame.EXIT_ON_CLOSE);收到错误 EXIT_ON_CLOSE 无法解析或不是字段

java - 如何解决 NoClassDefFoundError Java 代理

java - 在 Restassured Api 测试中,当我运行代码时,为什么在 g=truck 之前添加 "&"而不是 "; "