我正在阅读 Herbert Schildt 的《Java:完整参考》中关于 lambda 的一章,其中有很多对“lambda 目标类型”和“目标类型上下文”的引用:
函数式接口定义了目标类型的一个
拉姆达表达式。这里有一个关键点:只能使用 lambda 表达式
在其目标类型已指定。
Or:
如前所述,lambda 表达式不会单独执行。
相反,它形成了由
指定其功能的接口目标类型。结果,一个 lambda
表达式只能在以下上下文中指定:目标类型是
定义的。当 lambda 表达式被创建时,就会创建这些上下文之一
分配给功能接口参考。其他目标类型上下文包括变量初始化、返回语句和方法参数,以
举几个例子。
完后还有:
与 lambda 表达式关联的函数接口可以是通用的。在
本案中,目标类型lambda 表达式的部分取决于函数接口时指定的类型参数或参数
声明引用。
有人可以帮我理解 lambda 目标类型的含义吗?
例如,在(int n) -> n % 2 == 0
is int
lambda 的目标类型?
Or in:
interface MyInterface<T> {
T func();
}
MyInterface<String> myInt = () -> { return "123"; }
lambda 的目标类型是什么?是吗String
or MyInterface<String>
?这里 lambda 的上下文是什么?
我读了几篇关于该主题的文章,但仍然无法完全理解这些概念。
Thanks.
“目标”的定义之一(取自here https://dictionary.cambridge.org/dictionary/english/target) is:
您想要实现的结果或情况。
你可以说 lambda 表达式想要实现的结果是实现一些函数式接口。因此,该函数式接口可以被视为该 lambda 表达式的目标,并且该函数式接口的类型就是目标类型。
因此,目标类型是 lambda 表达式实现的函数接口的类型。
可以根据以下内容推断目标类型context其中使用了 lambda 表达式:
- 如果将 lambda 表达式分配给函数接口引用变量,则该变量的类型就是目标类型。
- 如果某个方法返回 lambda 表达式,则该方法的返回类型就是目标类型。
- 如果 lambda 表达式作为参数传递给方法,则该方法所需的相应参数的类型就是目标类型。
In
(int n) -> n % 2 == 0
目标类型未知。如果将此表达式分配给某个功能接口引用,则该引用将是目标类型。
In
MyInterface<String> myInt = () -> { return "123"; }
目标类型是MyInterface<String>
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)