簡體   English   中英

如何解決異常 java.lang.ClassCastException: java.math.BigDecimal cannot be cast to [Ljava.lang.Object; 在 Java 中

[英]How to resolve exception java.lang.ClassCastException: java.math.BigDecimal cannot be cast to [Ljava.lang.Object; in java

在我的代碼中, query工作正常,但在迭代時會引發此錯誤。

我的代碼在這里:

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();顯示錯誤Object[] obj = (Object[]) itr1.next(); 線。

我的代碼有什么問題?

正如錯誤所說:不能將單個 BigDecimal 轉換為對象數組。 您有錯誤的列表需要迭代:li <> li1。 for (Iterator itr1 = li.iterator(); itr1.hasNext();) {更改為 for (Iterator itr1 = li1.iterator(); itr1.hasNext();) {然后它應該可以工作。

首先,轉換:您將列表li上的迭代器視為數組列表上的迭代器,而實際上它是BigDecimal列表上的迭代器。 它的li1 ,你應該是迭代:

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

另一個錯誤發生在早期:

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

它應該是

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

因為查詢返回的列表中的對象是BigDecimal類型,正如失敗的演員所確認的那樣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM