Sep 22 2008
Ein Array Casten
Egal in welcher Programmiersprache man nun zu Hause ist, Array’s begegneten einem Tag ein Tag aus. Gerade in meinem Java Projekten komme ich öfters an den Punkt wo ich ein Array von Objekten auf einen bestimmten Typ casten möchte um z.B. aus einem Object[] ein String[] machen zu können.
Leider stellt sich Java hier ein wenig quer und lässt ein Casten von kompletten Objekt-Arrays nicht zu, so dass ich basierend auf den Java Generics folgende kleine Workaround Funktion geschrieben habe:
public static <T>T[] castArray(Class<T> pClass, Object[] pObject)
{
ArrayList<T> lList = new ArrayList<T>(pObject.length);
for (int i = 0; i < pObject.length; i++)
lList.add((T)pObject[i]);
return lList.toArray((T[]) Array.newInstance(pClass, lList.size()));
}
Wenn ich also ein Object Array zu einem String Array umwandeln möchte würde dies über folgenden Aufruf geschehen:
String[] lStringArray = castArray(String.class, myObjectArray);

[...] Es waren einfach soooviele Gespräche. Noch nicht erwähnt habe ich auf jedenfall Lucien, Daniel, Thomas – nochmal sorry, irgendwie hat es nicht sollen sein mit dem längeren Gespräch – [...]
Also das mit dem casten ist so ne Sache. Wenn ich ein Object in ein Date caste erhalte ich KEIN neues Objekt sondern nur einen anderen Datentyp für das gleiche Objekt. Wenn ich dieses Date dann befummel, also ihm eine andere Zeit setze, ändert sich die Zeit bei allen, die das gleiche Objekt referenzieren. Deine Methode erzeugt aber ein NEUES Array, also bekommen alle die das Array referenzieren, nix von Deinen Änderungen mit. Also Vorsicht: Das ist KEIN cast, eher ein copyToNewArray
[...] an: http://www.programmieren-macht-sexy.de/programmieren/java/ein-array-casten/ Posted by Christoph in Allgemein Tagged array, cast, [...]