学习笔记
Lambda表达式(闭包)是Java8最重要的新特性
Lambda表达式允许把函数作为参数传递到方法中
作用:可以使代码变得简洁紧凑
语法格式:
(paramters)->expression
或
(paramters)->{statements}
特性
- 可选类型声明:不需要声明参数类型,编译器可以统一识别参数值。
- 可选的参数圆括号:一个参数无需定义圆括号,但是多个参数需要。
- 可选的大括号:如果主体只包含了一条语句,则不需要大括号。
- 可选的返回值关键字:如果主体只有一个表达式,则编译器会自动返回值。大括号需要指定返回值
Java测试代码
ublic class LambdaTest {
Calculation calculation = (int x, int y) -> {
System.out.println(x + y);
};
//无需声明类型
Calculation calculation2 = (x, y) -> {
System.out.println(x + y);
System.out.println(x - y);
};
//只有一个语句,可选大括号
Calculation calculation3 = (x, y) -> System.out.println(x + y);
//参数只有一个,可选括号,只有一个表达式,可选return关键字
Calculation2 calculation4 = x -> x--;
//有大括号必须显式的声明return关键字
Calculation2 calculation5 = x -> {
x *= x;
return x;
};
public void test(){
//lamdba表达式作为参数传递
int x = calcaulate(10, x1 -> x1++);
}
public interface Calculation {
void calculate(int x, int y);
}
public interface Calculation2 {
int calculate(int x);
}
private int calcaulate(int x, Calculation2 calculation) {
return x - calculation.calculate(x);
}
}