0

方法格式:void forEach(Consumer action)
在代码Consumer<T>中,我没有指定关于 T 的(类型)。java怎么知道那是List<String>类型?我不知道 lambda 表达式是如何工作的..

List<String> list = Arrays.asList("John","Carl","Jenny");

Stream<String> stream = list.stream();
stream.forEach(name->System.out.println(name));
4

1 回答 1

-1

Lambda 表达式与匿名类和功能接口的概念相关联,请查看 Oracle 的 Java 教程:匿名类

Oracle 用于功能接口的 Java 8 Api 包:java.util.function

以及 lambda 表达式Oracle 的 Java 教程:Lambda 表达式

如果你试图用你的常规 java 代码替换 lambda 表达式,它会像

    stream.forEach(new Consumer<String>() {
        @Override
        public void accept(String t) {
            System.out.println(t);
        }

    });

**注意:在编译时 lambda 表达式不会被上面的代码替换,而是被(invokedynamic)指令替换,因为这篇好文章声明了DZone: Hacking Lambda Expressions in Java

于 2019-08-23T03:22:12.353 回答