2016-07-28 5 views
-2

Я читаю строку из базы данных с помощью 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

'Я также попытался с Integer []' - вы попробуйте 'INT [] массив = (Integer []) 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. Для того, чтобы привести его к Integer [] является один лайнер и для межд [] вам потребуется цикл

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

} 
Смежные вопросы