java - 为什么我在 Java 8 Lambda 中使用 "Collectors.toList()"而不是 "Collectors::toList"?

标签 java lambda collectors tolist

这个问题在这里已经有了答案:





java 8 Collector<String, A, R> is not a functional interface, who can tell why?

(2 个回答)



Java8: Using Function::identity in Collectors.toMap(..) creates an argument mismatch error

(1 个回答)


3年前关闭。




通常在 flatMap 之后,我们使用 collect(Collectors.toList())收集数据并返回 List .

但是为什么我不能使用 Collectors::toList反而?我尝试使用它,但出现编译错误。

我试图搜索这个,但找不到任何解释。

非常感谢。

最佳答案

请参阅@Eran 的回答,因为它比我的更详细,但是如果有人想要 简单 解释:

你不能改变:
collect(Collectors.toList())collect(Collectors::toList)
你只能改变:
collect(() -> Collectors.toList())collect(Collectors::toList)

关于java - 为什么我在 Java 8 Lambda 中使用 "Collectors.toList()"而不是 "Collectors::toList"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51132863/

相关文章:

java - Java 8 Collector UNORDERED 特性是什么意思?

java - 可扩展 ListView 您可以移动自定义图标(指示器)吗?

java - 多次重新运行一组 JUnit 测试

java - 为什么比较器声明等于?

java - Collectors.toMap 仅当存在可选值时

Java 8 流将 List<Map<>> 通过相同的 <Key, Value> 分组到新的 List<Map<>>

javascript - 在Java JVM中使用dom上下文执行JS

java - java中可以创建多少个嵌套的 "new"对象?

c++ - std::priority_queue 包含我自己的类

c# - 如何识别类型为 "field reference"的 Lambda MemberExpression