将方法传递给Stream.forEach()

时间:2017-10-24 05:43:30

标签: java stream

我是从文本文件写到ArrayList。这是我的代码:

List<String> text = new ArrayList<String>();
try (Stream<String> stream = Files.lines(Paths.get(path))) {
    stream.forEach(text::add); //the part I'm stucked with
} catch (Exception e) {
    System.err.println(e.getMessage());
}

实际上,我已经forEach(text::add)直觉地制作了它,并且它有效。你能解释一下这部分的内部结构,我应该阅读哪些主题以及有哪些替代方案? Oracle告诉:

  

forEach(Consumer&lt;?super T&gt; action)   
为每个人执行一个动作   这个流的元素。

所以我不清楚我的代码是如何工作的。

1 个答案:

答案 0 :(得分:1)

部分text::add称为MethodReference

有关详细信息及其工作原理,请参阅oracle的官方文档:MethodReference

另一篇关于MethodReference的精彩文章,包括forEach Using method references in Java 8

的示例