2016-07-28 11 views
-2

Ich lese eine Zeile aus der Datenbank mit JPA, die ein Objekt mit drei int-Werten bietet.Casting-Objekt zu int Array funktioniert nicht

Eclipse debugger

ich jetzt versuchen, dieses Objekt zu einem int[] Array zu werfen, die eine ClassCastException und sagt wirft:

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

Dies ist mein Code: auch

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; 
} 

I versucht mit Integer[]. Gleiche Ausnahme.

Hat jemand das Problem? Wie kann ich es umsetzen?

+0

'Ich habe auch versucht, mit Integer []' - haben Sie versucht, 'int [] array = (Integer []) Objekt; 'oder' Integer [] Array = (Integer []) Objekt; '? Nur letzteres sollte funktionieren. – Eran

+0

Versuchen Sie, Ihre Liste zu Objekt [] (Liste ) –

+4

zu werfen Dieser Beitrag sollte die Antwort auf Ihre Frage haben: http://StackOverflow.com/Questions/1115230/casting-Object-array-to-integer-array-error – anaBad

Antwort

0

Wie bereits erwähnt, gibt es einen Unterschied in int [] und Integer []. Wie von @anabad beschrieben, können Sie den anderen SO-Post folgen. Um es zu Integer cast [] ist ein Einzeiler und für int [] benötigen Sie eine Schleife

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

}