Java中如何使用带有函数接口的 lambda 表达式
Lambda表达式是匿名函数,没有任何返回类型、访问修饰符,也不属于任何类。它可以用来简化函数接口中抽象方法的实现。只要有函数接口,我们就可以使用lambda表达式而不是匿名内部类。
语法
([comma seperated argument-list]) -> {body}示例
@FunctionalInterfaceinterface BonusCalculator {
public double calcBonus(int amount);
}
class EmpDetails {
public void getBonus(BonusCalculator calculator, int amount) {
double bonus = calculator.calcBonus(amount);
System.out.println("Bonus: " + bonus);
}
}
public class LambdaExpressionTest {
public static void main(String[] args) {
EmpDetails details = new EmpDetails();
//使用匿名内部类
EmpDetails details = new EmpDetails();
details.getBonus(new BonusCalculator () {
public double calcBonus(int amount) {
System.out.println("使用匿名内部类对员工进行奖金计算");
return amount*2;
}
},2000);
//使用Lambda表达式
details.getBonus((amount) -> {
System.out.println("使用Lambda表达式计算员工的奖金");
return amount*2;
},2000);
}
}输出结果
使用匿名内部类对员工进行奖金计算 Bonus: 4000.0 使用Lambda表达式计算员工的奖金 Bonus: 4000.0