Generic Arrays

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. 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.