Учитывая простой универсальный класс:

private static class Container<T> {
    private List<T> aList;
    private T aValue;

    private Container(List<T> aList, T aValue) {
        this.aList = aList;
        this.aValue = aValue;
    }
}

Инициализируйте список этого класса:

List<Container<?>> container = new ArrayList<>();
// Add some elements...

Невозможно (Метод toArray(IntFunction) в типе Stream> неприменим для аргументов (List[])):

container.stream().map(value -> value.aList).toArray(new List<?>[0]);

Возможный:

container.stream().map(value -> value.aList).collect(Collectors.toList()).toArray(new List<?>[0]);

Зачем?

1
Andreas Heidenreich 26 Янв 2022 в 13:03

1 ответ

Лучший ответ

Stream toArray принимает IntFunction<A[]>, то есть функцию, которая принимает int и возвращает массив.

Вы пытались передать ему массив.

Его следует использовать следующим образом:

container.stream().map(value -> value.aList).toArray(List<?>[]::new)
0
Eran 26 Янв 2022 в 13:15
Вы сделали мой день, спасибо!
 – 
Andreas Heidenreich
26 Янв 2022 в 13:40
Омг, какой глупый вопрос!
 – 
Andreas Heidenreich
26 Янв 2022 в 13:43