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() 

}