由于技术有限,可能理解不到位,或者有错误,希望大家及时指出,共同成长
Labbda表达式
java中Lambda表达式前提:有函数式接口的推断环境
函数式接口是有且仅有一个抽象方法的接口,可以有实现方法
函数式接口的推断环境
- Calculator param = (int a,int b) -> { return a + b };
calc(param); - calc((a, b) -> a + b);
Lambda表达式是将抽象方法翻译成以下三点:
- 一些参数(方法参数)
- 一个箭头
- 一些代码(方法体,大括号)
int sum(int a,int b);
翻译成Lambda标准格式
(int a,int b) -> { return a + b }
如何检测当前接口是不是函数式接口
将@FunctionalInterface写在接口前即可
不报错是函数式接口,否则不是
再Lanbda表达式中,凡是可以推导的,都可以省略
- 参数类型可以省略
- 如果参数有且只有一个,小括号也可以省略
- 如果语句只有一个,那么大括号和return也可以省略
接口类
@FunctionalInterface
public interface Calculator {
int sum(int a,int b);
}
实体类
public class Demo02Calc {
public static void main(String[] args) {
calc((a, b) -> a + b);
}
public static void calc(Calculator calculato) {
System.out.println("结果是"+calculato.sum(10, 20));
}
}