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

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高阶技术基础、框架技术的源码级分析、linux、SpringBoot、SpringCloud、阿里微服务框架Dubbo、Docker构建微服务或者在工作中遇到瓶颈,想跳槽加薪,面试不过,碰到难题等等一系列问题,可以加小助理姐姐:iiiinoo,这里有最专业的人为你排忧解难,有最新的学习资源免费为你共享。


640

扫码免费领取资料,仅限前 300 名

640



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值