Как в Java создать массив обобщённого типа (generic array: T[])
У массивов есть множество сложностей, когда они используются в сочетании с дженериками. Одной из таких сложностей является создание массива обобщённого типа: T[]. Эта задача решается при помощи метода newInstance() класса java.lang.reflect.Array.
Помимо информации о типе, для создания массива также понадобится знать его размер.
Лучше всего создавать такой массив в специальном методе, куда передавать тип и размер следующим образом:
public static <T> T[] createGenericArray(Class<T> clazz, int size) {
return (T[]) Array.newInstance(clazz, size);
}
Таким образом, следующий код, например создаст массив из 10 строк, заполненный null'ами, и выведет его содержимое (10 раз слово "null") в консоль:
public static void main(String[] args) {
String[] strs = createGenericArray(String.class, 10);
for (int i = 0; i < strs.length; i++) {
System.out.print(strs[i] + " ");
}
}
public static <T> T[] createGenericArray(Class<T> clazz, int size) {
return (T[]) Array.newInstance(clazz, size);
}