Collector.of()参数类型未按我想要的方式解析

时间:2018-09-03 12:11:08

标签: java java-stream collectors

Collector.of(供应商供应商,BiConsumer 累加器,BinaryOperator 组合器,Function 装订器,特性...)

    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类型中的Function,Collector.Characteristics ...)是   不适用于参数(ArrayList :: new,(   list,element)-> {},(list1,list2)->   {},函数,Collector.Characteristics [])

我需要帮助。

2 个答案:

答案 0 :(得分:3)

基本上两个问题-

  1. 您遇到语法错误,在Function.identity()之后,您将没有;

  2. 缺少第三个参数,它是一个return值。

答案 1 :(得分:2)

您在第三个参数中缺少返回值(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()