小编A. *_*gen的帖子

为什么 StringBuilder::append 是 BiConsumer<StringBuilder, String>?

我发现了一个使用 Stream API 的有趣示例:

Stream<String> stream = Stream.of("w", "o", "l", "f");
BiConsumer<StringBuilder, String> append = StringBuilder::append;
StringBuilder collected = stream.collect(StringBuilder::new, append, StringBuilder::append);
System.out.println(collected); //it works correctly
Run Code Online (Sandbox Code Playgroud)

Stream.collect 接受三个参数:

Supplier<R> supplier, BiConsumer<R, ? super T> accumulator, BiConsumer<R, R> combiner
Run Code Online (Sandbox Code Playgroud)

BiConsumer 接受两个参数并且不返回任何内容。为什么这条线可以编译和工作?

BiConsumer<StringBuilder, String> append = StringBuilder::append;
Run Code Online (Sandbox Code Playgroud)

StringBuilder 没有 void 方法 append(java.lang.StringBuilder, java.lang.String)。

java java-8

5
推荐指数
1
解决办法
951
查看次数

标签 统计

java ×1

java-8 ×1