一 .概述
在前面我们提出了lambda的本质,但是还有另外一个问题需要解释,就是lambda表达式的类型.
二 .lambda表达式的类型
首先我们看一下下面的例子:
static interface Inner{ void test(); } @Test public void test4() { Runnable run = () -> {} ; Inner inner = () ->{}; }
看到上面的代码,我们发现了一个问题,相同的lambda表达式却可以成为不同的类型,这很不可思议.
lambda表达式的类型匹配任何一个入参和出参相同的类型.
也就是说,在函数式编程之中,我们关系的仅仅只是入参和出参的不同.
三 .lambda表达式的语法
() -> {}
上面就是lambda表达式的语法,在很多情况下我们可以省略一部分,但是在这里我们不去说这个.
上面的表达式很明确,就是一个入参和出参的描述,这很符合我们对函数式编程的理解.
四 .内置的函数式接口
我们发现我们使用lambda表达式的时候,仅仅关心入参和出参,如果一致,我们都会认为是一种事物.
因此,jdk为了方便我们的使用,编写了一些我们常用的函数式接口: