表达式:(a,b)->a+b
method方法需要一个接口类型的参数
Lambda表达式就是充当了接口类型的参数
初步理解:
1.Lambda表达式前面的小括号,其实就是借口抽象方法的小括号。
2.箭头代表拿着小括号的数据做了什么事情,是一个指向的动作。
3.箭头后面就代表拿到参数之后做什么事情
Lambda表达式的语义本身就代表了怎么做这件事情,没有对象的概念在里面(更简单更直观)
使用Lambda表达式的前提是:必须要有"函数式接口"。
概念:有且仅有一个抽象方法的接口,叫函数式接口。
如何才能万无一失地检测一下当前接口是不是函数式接口呢?
用一个固定的格式写在public interface 之前即可:
@FunctionalInterface
public interface 函数式接口名{
//.....
}
Lambda表达式要想使用,一定要有函数式接口的推断环境。
1.要么通过方法的参数类型来确定是哪个函数式接口
2.要么通过赋值操作来确定哪个是函数式接口
Lambda的格式就是为了将抽象方法,翻译成以下三点
1.一些参数(方法参数)
2.一个箭头
3.一些代码(方法体,大括号)
例如抽象方法:
public adstract int sun(int a,int b);
翻译成为Lambda的标准格式:
(int a,int b)->{return a+b;}