Lambda表达式是Java中的一种语法特性

由于无法理解Lambda表达式,所以我根据自己的理解进行了简化,并记录了理解的结果。

匿名函数

首先,从维基百科上摘录了关于匿名函数的信息。

在编程语言中,匿名函数是指没有命名而定义的函数。

表示匿名函数的方法有很多种,但近年来主流的是使用lambda表达式的写法。

维基百科(https://ja.wikipedia.org/wiki/無名関数)

匿名函数

换言之,Lambda表达式是一种用于表示无名函数的方法(就是那个箭头符号 “->”)。事实上,Lambda表达式是指未命名而定义的函数。

顺便提一下,如果用Java来编写的话,大致就是这个样子。(从维基百科的匿名函数中摘录。)

import java.util.function.*;
...
BiFunction<Integer, Integer, Integer> add = (x, y) -> x + y;
System.out.println(add.apply(2, 3));

在这个例子中说明了以下几点:
· “(x,y)” 表示了无名函数的参数。

「x + y」表示了函数的处理。(尽管在这个示例中省略了,但可以用「{return x + y}」这样的表达方式。我认为这更像一个方法,并且更易于理解。)

函数式接口

为了什么目的使用匿名函数呢?函数式接口应运而生。
简单来说,它是一种可以赋值给函数(lambda表达式或方法引用)的接口。

比如说,BiFunction接口

型参数:
T – 函数的第一个参数的类型
U – 函数的第二个参数的类型
R – 函数的返回结果的类型
→可以赋值给具有两个参数和返回值的函数的接口。

换言之,将刚才的匿名函数赋值给这个接口,然后调用这个接口定义的方法(apply),就会执行匿名函数的处理。
结果是,由于将2和3作为参数传递给apply,所以输出的结果是2+3。

BiFunction<Integer, Integer, Integer> add = (x, y) -> {return x + y;};
System.out.println(add.apply(2, 3));

我认为这可能很难理解,因为在过去我从未考虑过将函数赋值给变量的想法。但是,在阅读JavaScript的书籍时,这个概念似乎是很常见的。

广告
将在 10 秒后关闭
bannerAds