lambda表达式介绍
lambda表达式 也可称为闭包 是java8发布的新特性
lambda允许把函数作为一个方法的参数
使用lambda的优势:使代码变的更加简洁紧凑
lambda表达式的语法格式(两种):
(parameters) -> expression
(parameters) -> {statements;}
lambda表达式的重要特征
类型声明 --> 可选:不需要声明参数类型,编译器可以统一识别参数值
参数圆括号 --> 可选:一个参数时无需定义圆括号,多个参数时必须定义圆括号
大括号 --> 可选:如果主体包含一个语句,可以不使用大括号
返回关键字(return) --> 可选:如果主体只有一个表达式时,编译器会自动返回值;如果使用了大括号需要指明表达式返回了一个数值
-> 必须要有的。是一个运算符,表示指向性动作
lambda表达式代码操作
public class Java8LambdaTest {
interface MathOperation {
int operation(int a, int b);
}
interface MessageOperation {
void sayMessage(String message);
}
private static int mathOperation(int a, int b, MathOperation matchOperation) {
return matchOperation.operation(a, b);
}
public static void main(String[] args) {
MathOperation addition = (int a, int b) -> a + b;
MathOperation subtraction = (a, b) -> a -b;
MathOperation multiplication = (a, b) -> {
return a * b;
};
MathOperation division = (a, b) -> a / b;
MessageOperation noParentheses1 = message -> System.out.println(message + mathOperation(10, 5, addition));
noParentheses1.sayMessage("10 + 5 = ");
MessageOperation noParentheses2 = message -> System.out.println(message + mathOperation(10, 5, subtraction));
noParentheses2.sayMessage("10 - 5 = ");
MessageOperation parentheses1 = (message) -> System.out.println(message + mathOperation(10, 5, multiplication));
parentheses1.sayMessage("10 * 5 = ");
MessageOperation parentheses2 = (message) -> System.out.println(message + mathOperation(10, 5, division));
parentheses2.sayMessage("10 / 5 = ");
}
}