Lambda表达式

Lambda表达式

函数式接口

  • 接口有且仅有一个抽象方法
  • 允许定义静态方法
  • 允许定义默认方法
  • 允许java.lang.Object中的public方法
  • 可以在任意函数式接口上使用@FunctionalInterface注解

lambda表达式

   lambda表达式本质上是借助函数式接口实现的匿名内部类,形式:(parameters) -> expression

public class Demo001 {

    public static void main(String args[]){
        Demo001 tester = new Demo001();

        MathCalculation addition=(a,b)->a+b;

        System.out.println("the result :"+ tester.operate(1,1,addition));
    }

    private double operate(double a, double b, MathCalculation mathCalculation){
        return mathCalculation.calc(a, b);
    }

}

@FunctionalInterface
interface MathCalculation {

    double calc(double a,double b);

    //default方法
    default double defaultFun(){
        return 0;
    }

    //static方法
    static double staticFun(){return 0;}
}

  代码中,(a,b)->a+b 即为lambda表达式,它实例化了这样一个实现了接口 MathCalculation 的类:

class addition implements MathCalculation{
    @Override
    public double calc(double a, double b) {
        return a+b;
    }
}

  等价于:

//MathCalculation addition=(a,b)->a+b;
//等价于==》

MathCalculation addition=new MathCalculation() {
      @Override
       public double calc(double a, double b) {
            return a+b;
      }
};
posted @ 2022-03-07 14:56  远山飘来清风  阅读(37)  评论(0)    收藏  举报