Jdk8已经不算个什么新玩意了,但总体来说,JDK8也算是个大的改动,增加了很多新玩意,比如Lamdba、StreamApi、新的时间处理方式、还有接口方面的新改动。其中比较新颖的要算Lamdba呢,lamdba那怪异的语法,初略的看上去还真有点莫名其妙,那么到底lamdba是什么玩意呢?
匿名委托(匿名内部类)
我并没打算百度一下详细的讲解lamdba的概念是什么,先大概了解他有什么用,对我们有什么好处,然后再由你决定是否在以后的工作中用上lamdba吧。
从哪里开始讲呢?从我们工作组经常用的匿名委托谈起……
匿名委托是什么玩意呢?其实就是我们经常会用到的“匿名内部类”
举个栗子,我们精彩用的线程,创建线程有好几种方法,那么用传统的。
new Thread(new Runnable() {
public void run() {
System.out.println("嗯,没错,这是个匿名内部类");
}
}).start();
上面的写法对于你来说应该再熟悉不过了,如果连这都不熟悉,那么请客官还是先打好java的基础吧,可以加群523916260,我们再细讨论。
好像有点偏题了,我们继续说。
仔细看上面,上面那段代码是从IDEA里面截图的,细看我们发现上面有段灰色的波浪线,我们把鼠标放到那灰色的上面,会发现。
翻译一下:匿名内部类可以用Lamdba表达式代替。。
那么怎么用lamdba表达式代替呢?
神奇的Lamdba
Lamdba的语法我先不说,先把上面的“匿名内部类”替换了再说吧
new Thread(()->System.out.println("嗯,没错,这是个匿名内部类")).start();
和上面的匿名内部类的代码进行比较,是不是发现代码少了好多行,而且在IDEA这工具里面还有了个lamdba的符号。
嗯,我确认这就是lamdba表达式呢,那么你应该可以看出lamdba的显著优点“让代码更加简洁”。
白话Lamdba的定义
好吧,看了上面简单的案例,现在我问你个问题,假设我现在是你的面试官,而你来面试的时候,我问你个问题。
“Lamdba你听说过吗?请说下Lamdba是什么?” 你改怎么回答?
官方的解释,请自己去百度,我把Lamdba的解释如下
Lambda是一个匿名函数,即没有函数名的函数(简化了匿名委托的使用,让你让代码更加简洁)
Lamdba是个匿名函数应该可以理解了吧,通过前面改写Runnable就能发现,他实际就是实现Runnable接口的另外一种写法(只是有点怪怪的)
更重要是红色字体标注的内容,它简化了代码,嗯,我想这一点你也应该能直观的感受到,没错吧,如果面试官问你的时候,你能不能把上面这个案例给复述出来了呢?
通过这篇文章,我想你已经明白了lamdba是什么玩意,那么lamdba的语法到底是怎么样的呢?
我现在会写匿名内部类,又怎么根据写的匿名内部类改成成Lamdba表达式呢?
欲知下文请听下回分析,另外如果想看其他的文章,可以加群或是留言,群号在前面已经出现。
来源:oschina
链接:https://my.oschina.net/u/3830332/blog/1806213