Какой оптимальный способ конвертировать дженерик лист в дженерик массив без рефлексии?

Упрощенная версия кода

 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;
    }
→ Ссылка