将对象转换为int数组不起作用

时间:2016-07-28 10:59:31

标签: java arrays object casting

我正在使用JPA从数据库中读取一行,它提供了一个具有三个int值的Object。

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[]。同样的例外。

有人看到了这个问题吗?我该如何施展它?

1 个答案:

答案 0 :(得分:0)

正如所指出的,int []和Integer []存在差异。如@anabad所述,您可以关注其他SO帖子。将它转换为Integer []是一个单元,对于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()

}