Generic Arrays
2008-04-10 gespeichert in: Softwareentwicklung
Arrays in Java sind nicht immer einfach zu behandeln. Dies gilt ganz besonders für die Bearbeitung und das Kopieren bei der Verwendung von Generics.
Wenn
Der Cast auf
Arrays.asList() und List.toArray() bieten schon einigen Komfort, aber auch dies reicht nicht immer.Wenn
List.toArray() liefert nur die korrekt getypte Liste, wenn ein Array korrekten Typs übergeben wird. Dieser wird jedoch auch als Ziel verwendet. Will man aber einen neuen Array mit passender Größe erzeugen. Hier hilft nur Array.newInstance(). Das Problem ist hier das erste Argument, der Komponententyp. Ist schon ein Array mit passendem Typ vorhanden, kann Class.getComponentType() verwendet werden (siehe auch diergo.array.ArrayCutter):@SuppressWarnings("unchecked")
private static E[] createArrayAs(E[] values, int size)
{
return (E[]) Array.newInstance(values.getClass().getComponentType(), size);
} Der Cast auf
E[] ist nicht zu vermeiden. Deshalb wurde die Methode ausgelagert und die unchecked-Warnung unterdrückt.

