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