在了解重载解析前,需要我们先对两个概念有一定的理解;
目标类型:利用lambda表达式所在上下文所期待的类型进行推导的类型。
lambda表达式只能出现在目标类型为函数式接口的上下文中。
高阶函数:指接受另外一个函数作为参数,或返回一个函数的函数。
判断:如果函数的参数列表里包含函数接口,或该函数返回一个函数接口,那么该函数就是高阶函数。
示例:<R> Stream<R> map(Function<? super T, ? extends R> mapper);
重载解析:
Lambda表达式作为参数时,其类型由它的目标类型推导得出;
推导过程遵循如下规则:
1. 如果只有一个可能的目标类型,由相应函数接口里的参数类型推导得出;
2. 如果有多个可能的目标类型,由最具体的类型推导得出;
3. 如果有多个可能的目标类型且最具体的类型不明确,则需人为指定类型;
错误示例:


本文深入探讨了Java中的Lambda表达式目标类型的概念,解释了如何通过上下文推导Lambda的类型。同时,阐述了高阶函数的定义,并通过示例展示了如何判断一个函数是否为高阶函数。在重载解析部分,详细说明了Lambda作为参数时类型推导的规则,包括单一目标类型、最具体类型的选择以及在冲突情况下的处理方式。通过对这些概念的理解,读者将更好地掌握Java中的函数式编程技巧。
19

被折叠的 条评论
为什么被折叠?



