1、什么是Lambda表达式?
lambda表达式是一个匿名函数。
2、为什么使用Lambda表达式?
使用lambda表达式可以对一个接口实现非常简洁的实现。
3、Lambda表达式对接口的要求?
虽然可以使用Lambda表达式对某些接口进行简单的实现,但是并不是所有的接口都可以用Lambda表达式来实现。要求接口中定义的必须要实现的抽象方法只能是一个。
eg:
import java.util.function.IntConsumer;
public class TestFive {
public static void main(String[] args) {
/* 匿名内部类*/
foreachArr(new IntConsumer() {
@Override
public void accept(int value) {
System.out.print(value+"\t");
}
});
/*Lambda表达式*/
foreachArr(value -> System.out.println(value));
}
public static void foreachArr(IntConsumer consumer){
int[] arr = {1,2,3,4,5,6,7,8,9,10};
for (int i : arr) {
consumer.accept(i);
}
}
}
@FunctionalInterface 修饰函数式接口。即接口中的抽象方法有且仅有一个。
():用来描述参数列表
{} :用来描述方法体
->:lambda运算符,读作goes to。
参数:由于在接口的抽象方法中,已经定义了参数的数量和类型。所以在lambda表达式中,参数的类型可以省略。(要省略全部都省略。不省略全部都不省略)
参数小括号:参数列表中参数数量如果只有一个,小括号可以省略。
方法大括号:如果方法体中只有一条语句,此时大括号可以省略。
如果方法体中唯一的一条数据是一个返回语句,则在省略大括号的同时,也必须省略掉return。
Lambda是函数式编程思想的体现。关注参数以及方法体。
注意:
- 参数数量和类型一定要和接口中定义的方法一致
- 返回值的类型一定要和接口中定义的方法一致
表达的不太明确,希望你能看懂,我也是刚懂然后为了加深记忆才写下来的。希望能对你了解Lambda有所帮助 如果您对这了解的更多。希望您指正。
或者您可以看看这个视频:
链接: https://www.bilibili.com/video/BV1Gh41187uR?share_source=copy_web.