Lambda表达式属于函数式编程
我个人认为Lambda主要就是根据约定的语法对接口的实现。
Lambda表达式主要就是
1.对接口方法的实现演变过程
/**
* 要求
* 1.参数数量和类型要与接口中定义的一致
* 2.返回值类型要与接口中定义的一致
*/
@FunctionalInterface
interface LambdaInterface{
int f(int a,int b);
default int f2(){return 1;};//default 表示已经实现
};
public class LambdaTest {
public static void main(String[] args) {
// 最开始的匿名内部类
LambdaInterface lambdaInterface1=new LambdaInterface() {
@Override
public int f(int a, int b) {
return 0;
}
};
// 使用Lambda表达式
LambdaInterface lambdaInterface2=(int a,int b)->{ return 0; };
// 优化一
LambdaInterface lambdaInterface3=(a,b)->{return 1;};
// 优化二(单个形参,可去掉括号)
LambdaInterface lambdaInterface4=(a,b)-> 1;
}
}
2.对已实现的方法的引用
语法
方法归属者::方法名
静态方法的归属者为类名,普通方法归属者为对象
-
要求
-
1.参数数量和类型要与接口中定义的一致
-
2.返回值类型要与接口中定义的一致
@FunctionalInterface interface LambdaInterface{ int f(int a,int b); default int f2(){return 1;};//default 表示已经实现 }; public class LambdaTest { public static void main(String[] args) { A a=new A(); B b=a::test2; } }