一、简要描述
- Lambda的语法格式
- Lambda的使用
二、Lambda的语法格式
- (parameters) -> {statements;}
- (pararmeters) -> expression
1、(parameters) -> {statements;}
- parameters: 函数的参数列表
- statements: 执行语句
- -> : 使用指定参数去完成某个功能
public int method(int a, int b) {/* 方法体 */return a + b;
}......(int a, int b) -> {return a + b;}
2、(parameters) -> expression
- parameters: 函数的参数列表
- expression: 表达式
- -> : 使用指定参数去完成某个功能
public int method(int a, int b) {/* 方法体 */return a + b;
}......(int a, int b) -> a + b;
三、Lambda的使用
- 可选的大括号{}
函数体只包含一个语句,不需要大括号
- 可选的参数圆括号()
只有一个参数,省略圆括号,同时省略类型
- 可选的返回关键字return
函数体只有一个表达式,且运算结果匹配返回类型
- 可选的类型声明
不需要参数类型,编译器可以根据参数值进行推断
1、可选的大括号{}
// 1、函数体只有一个语句,省略大括号
(String msg) -> System.out.println("hello" + msg);
2、可选的参数圆括号()
// 2、只有一个参数,省略圆括号,同时省略类型
msg -> System.out.println("hello" + msg);
3、可选的返回值关键字return
// 3、函数体只有个表达式,省略return
(int a, int b) -> a + b;
4、可选的类型声明
// 4、省略参数类型,编译器可以进行推断
(a, b) -> a + b;
四、代码实现
- 语法:
(parameters) -> { statements; }
或
parameters) -> expression
- Lambda表达式与函数式接口的抽象函数格式一一对应
前提: 必须有一个函数式接口(@FunctionalInterface)
- 代码演示:
- 0.Lambda表达式的基本格式
- 1.省略大括号
- 2.省略参数类型和大括号
- 3.省略小括号
- 4.省略参数类型和大括
1、定义IGreeting接口
package tech.flygo.lambda.demo2;/*** @description:* @author: flygo* @time: 2023/5/13 16:58*/
@FunctionalInterface
public interface IGreeting {void sayHello(String name);
}
2、定义IMathOperation接口
package tech.flygo.lambda.demo2;/*** @description:* @author: flygo* @time: 2023/5/13 16:56*/
@FunctionalInterface
public interface IMathOperation {int operation(int a, int b);
}
3、Lambda表达式测试类 LambdaSyntaxTest
package tech.flygo.lambda.demo2;/*** 语法:* (parameters) -> { statements; }* 或* (parameters) -> expression* <p>* Lambda表达式与函数式接口的抽象函数格式一一对应* 前提: 必须有一个函数式接口(@FunctionalInterface)* <p>* 代码演示:* 0.Lambda表达式的基本格式* 1.省略大括号* 2.省略参数类型和大括号* 3.省略小括号* 4.省略参数类型和大括号*//*** @description: Lambda表达式测试类* @author: flygo* @time: 2023/5/13 16:59*/public class LambdaSyntaxTest {public static void main(String[] args) {// 0.Lambda表达式的基本格式IMathOperation mo0 = (int a, int b) -> {return a + b;};System.out.println(mo0.operation(1, 2));// 1.省略大括号IGreeting greeting = (String msg) -> System.out.println("hello " + msg);greeting.sayHello("lambda");// 2.省略小括号greeting = msg -> System.out.println("hello " + msg);greeting.sayHello("FlyGo");// 3.省略returnIMathOperation mo1 = (int a, int b) -> a - b;System.out.println(mo1.operation(3, 4));// 4.省略参数类型和大括号IMathOperation mo2 = (a, b) -> a * b;System.out.println(mo2.operation(3, 4));}
}