Какой оптимальный способ конвертировать дженерик лист в дженерик массив без рефлексии?
Упрощенная версия кода
public V[] values() {
List<V> values = pojo.getValues();
return ; // values to array
}
Сигнатура метода требует вернуть V[]. Как перегнать List в V[] без использования рефлексии? Я не могу использовать values.toArray (new V[0]) или создать и заполнить массив самостоятельно из-за ошибки - "Type parameter 'V' cannot be instantiated directly"
Ответы (1 шт):
Автор решения: Sergei Buvaka
→ Ссылка
Вы можете написать что-то такое. Это не очень красивое решение и IDE будет вам говорит про Unchecked Cast, но работать это будет корректно.
public V[] values(List<V> values) {
Object[] result = new Object[values.size()];
for (int i = 0; i < values.size(); i++) {
result[i] = values.get(i);
}
return (V[]) result;
}