Lambda表达式
我们可以给一个java变量赋一个值,但是我们如果想要给一个java变量赋值一个“代码块”该怎么办呢?在java8之前,我们是不能办到的,java8引入了Lambda新特性,利用Lambda表达式我们就可以做到了。
![]()
就像上面这样,但是我们可以更加简化
![]()
这个被赋值给一个变量的函数就叫做Lambda表达式。在java8当中,所有Lambda的类型都是一个接口,而Lambda表达式本身,也就是那一段代码就是这个接口的实现。
只有一个接口函数需要被实现的类型,我们叫它“函数式接口”。为了避免后来的人在这个接口中增加接口函数导致其有多个接口函数需要被实现,变成“非函数接口”,我们可以在这个上面加上一个声明@FunctionalInterface, 这样别人就无法在里面添加新的接口函数了:
![]()
这样我们就能够得到一个完整的Lambada表达式了
![]()
Lambda表达式练习(无参无返回)
给定一个Cook接口,其只有一个抽象方法,且无参数无返回值。如下:
public interface Cook {
void makeFood();
}
在下面的代码中,请使用Lambda的标准格式调用invokeCook 方法,打印输出“正在做饭。”字样:
public class Demo05InvokeCook {
public static void main(String[] args) {
// TODO 请在此使用Lambda【标准格式】调用invokeCook方法
}
private static void invokeCook(Cook cook) {
cook.makeFood();
}
}
解答
public static void main(String[] args) {
invokeCook(()->System.out.println("正在做饭。"));
}