一个简单案例,5 分钟看懂 Java Lamdba 表达式

8 篇文章 0 订阅
1 篇文章 0 订阅

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语法留下一次分享。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值