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;
}
};

浙公网安备 33010602011771号