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 [])
我需要帮助。
答案 0 :(得分:3)
基本上两个问题-
您遇到语法错误,在Function.identity()
之后,您将没有;
。
缺少第三个参数,它是一个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()
。