首页 > 解决方案 > 如果它是一个抽象方法,forEach 如何将 lambda 表达式应用于数组?

问题描述

List<String> friends = Arrays.asList("Brian", "Nate", "Neal", "Sara");
friends.forEach(name -> System.out.println(name));

我正在研究java,我发现了这个例子,我只是把它放在一个main中,它正常打印了数组,所以我的问题是:

在我的理解name -> System.out.println(name)中是一个用于快速实现打印功能的 lambda 表达式,但我想知道如何forEach将它应用到数组的每个元素上?它是Iterable接口的方法,因此...空,那么代码在哪里告诉将打印应用于数组中的每个名称?

标签: javaforeachinterfaceiterable

解决方案


forEach是来自Iterable接口的默认方法,默认实现只是增强Consumer了每个元素的循环调用

for (T t : this)
     action.accept(t);

对 Iterable 的每个元素执行给定的操作,直到处理完所有元素或该操作引发异常。除非实现类另有规定,否则按迭代顺序执行操作(如果指定了迭代顺序)。操作引发的异常将转发给调用者。


推荐阅读