Zwei Methoden zum Erstellen generischer Arrays

Ich habe gelernt, zwei Methoden zum Erstellen von generischen Arrays zu befolgen.

Eins ist

@SuppressWarnings("unchecked")
static <T> T[] array1(final Class<T> elementType, final int size) {

    return (T[]) Array.newInstance(elementType, size);
}

Und der andere ist

static <T> T[] array2(final Class<T[]> arrayType, final int size) {

    return arrayType.cast(Array.newInstance(arrayType.getComponentType(), size));
}

Welches ist besser? Sind sie gleich (intern)? Ist überhaupt etwas falsch?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage