gpt4 book ai didi

java8 + foreach循环的内部工作

转载 作者:行者123 更新时间:2023-11-30 02:10:39 25 4
gpt4 key购买 nike

我是java8的新手。我试图了解 Streams 中 foreach 循环的工作原理。我的代码如下:-

Stream<String> s = someist.stream();
Consumer<String> consumer = (String s1)->System.out.println(s1);
s.forEach(consumer);

问题是,当我只是传递 Consumer 的引用而不是在其中调用consumer.accept(T t) 时,foreach 循环如何知道调用consumer.accept(T t) 。虽然,当我们为函数式接口(interface)提供一些 lambda 表达式时,我们需要调用它的抽象方法,但我们只是不在这里调用它。那么 foreach 循环如何知道它应该如何处理作为参数提供的消费者引用呢?

最佳答案

forEach的具体实现会调用accept,例如:

public class MyStream implements Stream<String> {

@Override
public void forEach(Consumer<? super String> action) {
while (hasNext()) {
action.accept(next());
}
}

...
}

关于java8 + foreach循环的内部工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50188974/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com