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