Типы аргументов Collector.of () не разрешаются так, как я хочу - PullRequest
0 голосов
/ 03 сентября 2018

Collector.of (поставщик поставщик, аккумулятор BiConsumer , BinaryOperator сумматор, функция финишер, характеристики ...)

    Collector<Integer, List<Integer>, List<Integer>> myCollector = 
            Collector.of(ArrayList<Integer>::new, 
                    (list, element) -> {list.add(element);}, 
                    (list1, list2) -> {list1.addAll(list2);},  
                    Function.identity();, 
                    Characteristics.values()
                    );

Когда я запустил приведенный выше код, я ожидал, что типы, используемые в статической функции Collector.of (), будут разрешены, но это не так. Вызывает следующую ошибку в eclipse

Метод (Поставщик, BiConsumer, BinaryOperator, Функция, Collector.Characteristics ...) в типе Collector есть неприменимо для аргументов (ArrayList :: new, ( list, element) -> {}, (list1, list2) -> {}, Функция, Коллектор. Характеристики [])

Мне нужна помощь с этим.

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

В основном два выпуска -

  1. Синтаксическая ошибка, которая возникает после Function.identity() ;.

  2. Отсутствует третий параметр, который является значением return.

0 голосов
/ 03 сентября 2018

В третьем параметре отсутствует возвращаемое значение (BinaryOperator должно иметь возвращаемое значение):

Collector<Integer, List<Integer>, List<Integer>> myCollector = 
        Collector.of(ArrayList<Integer>::new, 
                (list, element) -> {list.add(element);}, 
                (list1, list2) -> {list1.addAll(list2); return list1;}, 
                                                    //  -------------   added 
                Function.identity(), 
                Characteristics.values()
                );

У вас также были дополнительные ; после Function.identity().

...