本篇主要给大家带来 Lambda 的前世今生和函数式接口的关系,并详细讲解函数式接口中的四个主要接口和一众衍生接口,在文章正式开始之前,想必一些读者也是知道 Lambda 是匿名表达式的,但是可能并不清楚它是根据什么规则进行的转换,想必大家看完本文之后会有一个清晰的了解。

以下是本文的整体脉络:

1. Lambda

咱们首先来说说 Lambda 这个名字,Lambda 并不是一个什么的缩写,它是希腊第十一个字母 λ 的读音,同时它也是微积分函数中的一个概念,所表达的意思是一个函数入参和出参定义,在编程语言中其实是借用了数学中的 λ,并且多了一点含义,在编程语言中功能代表它具体功能的叫法是匿名函数(Anonymous Function),根据百科的解释:

匿名函数(英语:Anonymous Function)在计算机编程中是指一类无需定义标识符(函数名)的函数或子程序。

到这我们应该看懂了,在编程语言中引入了 λ 的数学中的意思后,还加入了“匿名”这个概念,为什么要加它呢?显然是为了让开发者写起来更加方便,不必去想具体的函数名,尤其是在流式表达中,匿名能让你更加高效。

接着再来说说Lambda 的历史,虽然它在 JDK8 发布之后才正式出现,但是在编程语言界,它是一个具有悠久历史的东西,最早在 1958 年在Lisp 语言中首先采用,而且虽然Java脱胎于C++,但是C++在2011年已经发布了Lambda 了,但是 JDK8 的 LTS 在2014年才发布,所以 Java 被人叫做老土不是没有原因的,现代编程语言则是全部一出生就自带 Lambda 支持,所以Lambda 其实是越来越火的一个节奏~

那么Lambda 到底好在哪?不用写函数名?其实我觉得要回答这个问题首先要明白Lambda 在编程语言方面到底是什么?</