https://www.runoob.com/java/java8-lambda-expressions.html这个里面有详细教程
目录
从业也有一段时间了,我这个人有个最大的毛病就是对新的东西恐惧,不接受新鲜事物,但是作为一只IT狗怎么可能不去学习新东东,lambda表达式对于很多人来说应该已经很老了,对于我来说可能个人比较菜,那么就当做事接受新鲜事物的一个起点吧,希望和大家共勉.
-
函数式接口
首先介绍lambda表达式之前,我们先说下函数式接口的概念(脸上笑嘻嘻,心里又MMP的抵触),在java中还特意提供了一个注解用于标注该接口为函数式接口-->@FunctionalInterface.
那么这个狗dongxi到底是做什么用的呢,先看下面的图.
这个图中我随便定义了一个动物的接口Animal,我特意在这接口上面谢了@FuntionalInterface这个注解,里面写了两个简单的方法,下面神奇的一幕出现了,我将第一个play()这个方法的注释打开
居然报错了.报错的信息提示Animal不是一个函数式接口.这个报错我们还是很喜欢的,就相当于替我们总结了函数式接口的概念,就是说我们定义的接口中有且必须仅有一个方法才可以.
-
冲进lambda表达式
上面讲了一大堆的概念.那么现在开始进入正题,上面介绍的意思就想告诉大家lambda表达式也必须遵循函数式接口的规范才可以,也就是说lambda表达式针对的接口必须只有一个方法才行.而且千万要理解接口的lambda表达式一定是针对接口而存在的,这句话不是废话.(其他的集合的用法下次介绍)
现在介绍下lambda表达式的形式.看别人的帖子大家估计都能看到了,他们一般大部分总结为三个部分
1. 参数部分
比如(),(x,y)
2.符号部分,也就是 -> , 我看有个帖子总结的含义我感觉特别容易理解,那就是传导.在解释洗点就是讲左边的参数部分 传递给右边的执行方法
3.方法体部分
下面看下使用
简单易懂的使用方式,仅需一行代码,再举个例子,比如我刚才自定义的Animal类
这个里面想说的就是我左面用Animal a来接收,实际上的意思和匿名内部类是一样的.也就是说我相当于重写Animal这个函数式接口的方法,但是接收一定要用Animal这个接口来接收,之后你就相当于重写完方法可以进行调用了