Lambda简介
Lambda 可定义为一种简洁、可传递的匿名函数,它是推动Java 8发布的最重要新特性
Lambda 本质上是一个函数,虽然它不属于某个特定的类,但具备参数列表、函数主体、返回类型,甚至能够抛出异常
Lambda 是匿名的,它没有具体的函数名称
Lambda 允许把函数作为一个方法的参数(函数作为参数传递进方法中)
Lambda 可以使代码变的更加简洁
基本语法
参数列表 -> 表达式
参数列表 -> {表达式集合}
需要注意的是 lambda 表达式默认隐含了 return 关键字,在单个表达式中,我们无需在写 return 关键字,也无需写花括号。
只有当表达式是一个集合的时候,才需要写花括号及 return关键字
/**
* @program: Java 8
* @description:
* @author: MW
* @create: 2020-05-25 15:25
**/
public class Java8Tester {
public static void main(String args[]){
Java8Tester tester = new Java8Tester();
// 类型声明
MathOperation addition = (int a, int b) -> a + b;
// 不用类型声明
MathOperation subtraction = (a, b) -> a - b;
// 大括号中的返回语句
MathOperation multiplication = (int a, int b) -> { return a * b; };
// 没有大括号及返回语句
MathOperation division = (int a, int b) -> a / b;
System.out.println("10 + 5 = " + tester.operate(10, 5, addition));
System.out.println("10 - 5 = " + tester.operate(10, 5, subtraction));
System.out.println("10 x 5 = " + tester.operate(10, 5, multiplication));
System.out.println("10 / 5 = " + tester.operate(10, 5, division));
// 不用括号
GreetingService greetService1 = message ->
System.out.println("Hello " + message);
// 用括号
GreetingService greetService2 = (message) ->
System.out.println("Hello " + message);
greetService1.sayMessage("Runoob");
greetService2.sayMessage("Google");
}
interface MathOperation {
int operation(int a, int b);
}
interface GreetingService {
void sayMessage(String message);
}
private int operate(int a, int b, MathOperation mathOperation){
return mathOperation.operation(a, b);
}
}