为什么我们不在lamnda表达式中使用参数类型?

时间:2019-08-23 02:07:50

标签: java lambda

方法格式:void forEach(消费者操作)
 在代码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));

1 个答案:

答案 0 :(得分:-1)

Lambda表达式与匿名类的概念联系在一起 和功能接口看看 Oracle's Java Tutorial: Anonymous Classes

Oracle's Java 8 Api for functional interfaces package: java.util.function

以及lambda表达式Oracle's Java Tutorial: Lambda Expressions

,如果您尝试用常规的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