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