2016-07-28 68 views
-2

我正在使用JPA讀取數據庫中的一行,JPA提供了一個具有三個int值的Object。將對象轉換爲int數組不起作用

Eclipse debugger

我現在想這個對象強制轉換爲int[]陣列,它拋出一個ClassCastException並說:

Ljava.lang.Object; cannot be cast to [I 

這是我的代碼:

try { 
    utx.begin(); 
} catch (NotSupportedException e) { 
    e.printStackTrace(); 
} catch (SystemException e) { 
    e.printStackTrace(); 
} 
Query q = em.createNativeQuery("SELECT * FROM mytable"); 
List<Object> objectList = q.getResultList(); 

for (int i = 0; i < objectList.size(); i++) { 
    Object object = objectList.get(i); 
    int[] array = (int[]) object; 
} 

我也試用Integer[]。同樣的例外。

有人看到問題嗎?我該如何施展它?

+0

'我也試圖與整數[]' - 你嘗試'INT []數組=(整數[] )object;'或'Integer [] array =(Integer [])object;'?只有後者應該工作。 – Eran

+0

嘗試將您的列表投到對象[](列表) –

+4

這篇文章應該有你的問題的答案:http://stackoverflow.com/questions/1115230/casting-object-array-to-integer-array-error – anaBad

回答

0

正如所述,在int []和Integer []中有所不同。正如@anabad所指出的那樣,您可以按照其他SO貼子進行操作。它轉換爲整數[]是一個內襯和INT [],您將需要一個循環

Object[] objectArray = new Object[] { new Integer("32"), new Integer("11"), new Integer("0") }; 
int[] integers = new int[objectArray.length]; 

Integer[] objectIntArray = Arrays.copyOf(objectArray, objectArray.length,Integer[].class); 


for (int i = 0; i < objectArray.length; i++) { 
    integers[i] = (int) objectArray[i];// works from java 7 , else 
             // use 
             // Integer.parseInt(objectArray[i].toString() 

}