Lambda概述
- Lambda表达式是」DK8开始后的一种新语法形式。
- 作用:简化匿名内部类的代码写法。
Lambda:表达式的简化格式
什么是函数式接口?
- 首先必须是接口、其次接口中有且仅有一个抽象方法的形式
- 通常我们会在接口上加上一个@Functionallnterface注解,标记该接口必须是满足函数式接口。
代码示例:
package com.d3_lambda;
/**
* Lambda作用:简化代码。
*/
public class LambdaDemo1 {
public static void main(String[] args) {
//1、常规写法
// Swimming swimming = new Swimming() {
// @Override
// public void swim() {
// System.out.println("游泳超级快!");
// }
// };
// 调用go方法
// go(swimming);
// //2、第一次简化(方式1)
// Swimming swimming = () -> {
// System.out.println("游泳超级快!");
// };
// //调用go方法
// go(swimming);
// //第一次简化(方式2)
// go(new Swimming() {
// @Override
// public void swim() {
// System.out.println("游泳超级快!");
// }
// });
//第二次简化!!!!!
go(() -> {
System.out.println("游泳超级快!");
});
}
public static void go(Swimming s){
System.out.println("开始游泳~");
s.swim();
}
}
/**
* 函数接口:只能有一个抽象方法
*/
@FunctionalInterface
interface Swimming{
void swim();
}
输出结果:
开始游泳~
游泳超级快!
小结:
1、Lambda表达式的基本作用?
- 简化函数式接口的匿名内部类的写法。
2、Lambda表达式有什么使用前提?
- 必须是接口的匿名内部类,接口中只能有一个抽象方法
3、Lambda的好处?
- Lambda是一个匿名函数,我们可以把Lambda表达式理解为是一段可以传递的代码,它可以写出更简洁、更灵活的代码,作为一种更紧凑的代码风格,使java语言表达能力得到了提升。
Lambda表达式的省略写法(进一步在Lambda表达式的基础上继续简化)
- 参数类型可以省略不写。
- 如果只有一个参数,参数类型可以省略,同时()也可以省略。
- 如果Lambda : 表达式的方法体代码只有一行代码。可以省略大括号不写,同时要省略分号";"
- 如果Lambda : 表达式的方法体代码只有一行代码。可以省略大括号不写。此时,如果这行代码是return语句,必须省略return不写,同时也必须省略";"不写