toArray

cuchulainn

Mitglied
Hallo,

ich habe ein Problem mit der toArray-Methode von ArrayList. Ich habe eine gefüllt ArrayList, deren Einträge ich nun einem Integer-Array zuweisen möchte. Ich habe es folgendermaßen versucht:

Code:
 feld = puffer.toArray();

Dann bekomme ich aber die Fehlermeldung: "incompatible types - found java.lang.objects[] but expected int[]"

Was habe ich falsch gemacht?

Gruß

Cuchulainn
 
Frohe Weihnachten!
toArray() legt ein Array des Typs Object an, und ich vermute, dass Dein "feld" ein Integer-Array ist. Damit sind die beiden Typen nicht direkt kompatibel, Du wirst casten müssen von Object auf Integer.
 
Hallo!

Schau mal hier:
Code:
    	List list = new ArrayList();
    	list.add(Integer.valueOf(1));
    	list.add(Integer.valueOf(2));
    	list.add(Integer.valueOf(3));
    	list.add(Integer.valueOf(4));
    	list.add(Integer.valueOf(5));
    	
    	//Integer[] ints = (Integer[])list.toArray(); //ClassCastException
//Du bekommst hier kein Integer[] zurück sondern IMMER ein Object[].
//Dieses Object[] beinhaltet zwar deine Integer jedoch ist Object[] nicht zu Integer[] 
//kompatibel, weshalb du eine ClassCastException bekommst. 
//(Anders herums wär kein Problem)
    	
//So kannst du das "problem" umgehen.
    	Integer[] ints = new Integer[list.size()]; 
    	list.toArray(ints);

    	for (int i = 0; i < ints.length; i++) {
			System.out.println(ints[i]);
		}

Gruß Tom
 
Hallo!

Der Grund weshalb Integer[] nicht zu Object[] kompatibel ist erkennt man hieran:

Code:
for (Class clazz = Integer[].class.getSuperclass(); clazz != null; clazz = clazz
				.getSuperclass()) {
			System.out.println(clazz.getName());
		}

Ausgabe:

D.h. die Einzige SuperKlasse von Integer[] ist Object und Object ist nicht kompatibel zu Object[].

... jedoch ist Object[] kompatibel zu Object ;-)

Gruß Tom



Gruß Tom
 
Zurück