2016-03-21 42 views
0

Aşağıdaki durum var: int BigDecimal dönüştürenHata BigDecimal int dönüştürmek

List<BigDecimal> nvs = servSuperlivelloDAO.findNetworkVersion(year, daynumber); 
int[] res = new int[nvs.size()]; 
for (int i = 0; i < nvs.size(); i++) { 
    res[i] = nvs.get(i).intValue(); 
} 

bu hatayı veriyor:

java.lang.ClassCastException: java.lang.Integer cannot be cast to java.math.BigDecimal

Ben BigDecimal listesinde bir Tamsayı neden anlamıyorum.

+1

bir [MCVE] Lütfen: Burada

BigDecimal herhangi bir hata olmadan int demir atıldı bir örnektir. Sorun yayınlanan kodda değil. – Tunaki

+3

, '.findNetworkVersion() 'aslında' Tamsayı ',' BigDecimal 'değil,' –

cevap

1

i sorun yumruk hattı

List<BigDecimal> nvs = servSuperlivelloDAO.findNetworkVersion(year, daynumber); 

findnetworkVersion() metodu ayıklama dene olduğunu tahmin. Ve bu yöntemin dönüş türünü kontrol edin. (Gerçekten BigDecimal'in Listesi mi?).

+0

'listesini döndürüyor gibi görünüyor Sorun, findNetworkVersion'ın iç çalışmalarının (hata ayıklama tarafından ortaya çıkarılacağı gibi) çok fazla değil, kesinlikle bildirilen dönüş türünü değil yöntem. Birincil ilgili soru, döndürülen listedeki nesnelerin çalışma zamanı türü. Bir hata ayıklayıcısına sahip olanları, kodunuzda getClass() ve/veya instanceof testleri ile arayabilirsiniz. –

+1

Soruya göre, hata diyor - java.lang.Integer java.math.BigDecimal için kullanılamaz. Bu, Tamsayı'nın bir yerine geri döndürülüp BigDecimal'e atanması anlamına gelir. Bu soruda belirtildiği gibi, "BigInteger'den Integer'e dönüştürme" değil. –

+0

@ OleV.V. Hata ayıklama ile, bu işlevin (findNetworkVersion()) geri döndüğünü bulmayı amaçlıyordum. –

-1

Sasha'nın önerisi doğruysa, nvsList<? extends Number> nvs (sınanmadım) bildirerek çözebilirsiniz.

0

Bence DAO yöntemi: servSuperlivelloDAO.findNetworkVersion (yıl, daynumber), bir BigDecimal yerine bir int döndürdü. Kontrol et !

package test; 

import java.math.BigDecimal; 
import java.util.ArrayList; 
import java.util.List; 

public class Main { 
    public static void main(String[] args) { 
     List<BigDecimal> list = new ArrayList<BigDecimal>(); 
     list.add(new BigDecimal(1)); 
     list.add(new BigDecimal(2)); 
     int arr[] =new int[list.size()]; 
     for(int i=0;i<list.size();i++) 
     { 
      arr[i] = list.get(i).intValue(); 
      System.out.println(arr[i]); 
     } 

    } 
} 
İlgili konular