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 接口(interface)的一个方法,因此...空,那么代码在哪里告诉我们将 print 应用于数组中的每个名称?
最佳答案
Arrays.asList
在当前实现中返回 ArrayList
,它具有使用普通 for 循环进行迭代的
将 lambda 应用于每个元素。它重写(通过某些继承层)并实现forEach
实现Iterable.forEach
。当然,它还扩展了List
。来自 java.util.ArrayList:
for (int i = 0; modCount == expectedModCount && i < size; i++)
action.accept(elementAt(es, i));
来自 java.util.Arrays:
public static <T> List<T> asList(T... a) {
return new ArrayList<>(a);
}
关于java - 如果 forEach 是抽象方法,它如何将 lambda 表达式应用于数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59020633/