一个简单案例看懂java Lamdba表达式

优效学院,大数据,人工智能,Java,架构,在线教育


JDK8引入了一个新玩意,叫做lamdba(那么大)的表达式,说得神乎其神,说真的,这玩意吧,并不难,但是要讲清楚吧,也不是太容易的事情。

从匿名内部类开始说起

老实交代,直接来讲lamdba表达式还真是个枯燥的玩意,那从哪下手呢,我想你一定使用过匿名内部类吧,这玩意在javaswing里面用的超级多。

比如监听一个按钮的单击事件:

JButton jButton = new JButton();

jButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

System.out.println("按钮被点击了");

}

});

这段代码应该不陌生吧,addActionListener的这方法需要一个ActionListener接口类型的参数,我这里传参就是通过匿名内部类的方式。

你可能会说,swing是什么古董,java开发早不玩这玩意了,嗯,我不好反驳(毕竟连eclipse都是swing\awt开发的)。

好吧,我再举另外一个栗子,线程怎么样,线程如果还不懂,我就要……

创建线程有很多种方式,那么我从里面选一直比较简单的

比如:

new Thread(new Runnable() {

public void run() {

System.out.println("这是个线程,我是匿名内部类");

}

}).start();

好吧,你仔细看下上面两个实例代码,并且……

并且数一数上面代码的行数,我姑且算它5行不过分吧。

话锋一转,来看下Lamdba的定义

定义:Lambda是一个匿名函数,即没有函数名的函数(简化了匿名委托的使用,让你让代码更加简洁)

请不要去百度这句话出自哪,我有点羞于承认这是我自己总结的,嗯,有一点成就感,同时也有点害羞。

你来看下这句话的意思,Lambda是一个匿名函数,即没有函数名的函数,这句话是不是非常眼熟,这不就是匿名内部类吗?

嗯,其实括号里面的才是重点【简化了匿名委托的使用,让你让代码更加简洁】

匿名委托又是什么鬼?

其实我卖了个关子,匿名委托就是匿名内部类

用直白的话来讲,lamdba表达式就是简化了匿名内部类的编写,这样解释应该好懂吧(不懂你把我杀了吧)

万一不懂,嗯,万一还是不懂请留言吧。

Lamdba(那么大)的表达式到底是什么简化代码?

谜题好像要解开了,知道了匿名委托是什么,也知道了Lamdba表达式的定义,那么回到刚才写的那两个匿名内部类。

第一个

JButton jButton = new JButton();

jButton.addActionListener(new ActionListener() {

public void actionPerformed(ActionEvent e) {

System.out.println("按钮被点击了");

}

});

使用lamdba把上面的简化下:

JButton jButton = new JButton();

jButton.addActionListener(e -> System.out.println("按钮被点击了"));

再来看第二个,线程的那个内部类

new Thread(new Runnable() {

public void run() {

System.out.println("这是个线程,我是匿名内部类");

}

}).start();

再使用lamdba简化一下

new Thread(()-> System.out.println("这是个线程,我是匿名内部类")).start();

好吧,还是那个要求,请你数数,看下使用lamdba表达式到底简化了多少行代码。

嗯,我想现在你一定对lamdba有了一定的理解,知道他确实是简化了代码的编写。

仔细看下这lamdba,感觉还是不太好理解,里面既然冒出了个“->”的符号,现在似乎应该来讲讲lamdba的语法了。。

但,请容我休息一下,具体的lamdba语法留下一次分享。


需要Java方面的资料可以私聊小编获取,

一个简单案例看懂java Lamdba表达式

一个简单案例看懂java Lamdba表达式

一个简单案例看懂java Lamdba表达式


分享到:


相關文章: