Java8新特性之Lambda表达式初探

本文介绍了Java8的Lambda表达式,解释了为何使用它以减少代码量,详细解析了Lambda表达式的构成,包括参数和实现代码,并讨论了Lambda表达式中引用变量的限制。同时,提到了Java8提供的函数式接口,如Runnable和BiFunction,并通过实例展示了如何使用。
摘要由CSDN通过智能技术生成

目录

 

●为什么要用Lambda表达式?

●Lambda表达式拆解

●Lambda表达式中引用的变量

●Java8内置的函数式接口

●小结


●为什么要用Lambda表达式?

在本文写作时,Java8其实已经推出4年有余,Lambda表达式已经不算是一个“新”东西了,很多语言,诸如C#、Python都支持了这个特性。笔者在工作中发现很多非互联网公司的传统项目,还是在用Java7进行开发,究其根本是对新技术学习成本和使用成本的控制,这个暂且按下不表。未来,工作中新的一个项目会基于Java8进行开发,笔者通过网络比较一了下两个JDK版本的差异,最大的不同,也是大家津津乐道的Java8对Lambda表达式的支持。

 

第一次接触这个特性的时候,走了一些弯路,直接看的《JAVA8函数式编程》这本书,感觉概念上有点抽象,后来在CSDN、知乎等平台看了一些碎片化的文章,对Lambda有了具象的了解。本文将从笔者,也是大部分初学Lambda表达式的同学的角度出发,提出问题“是什么”。

 

其实,在目前阶段,不深究其原理的话,要解答“是什么”,不如来看看“为什么要用Lambda表达式”:

 

public class App
{
    public static void main( String[] args )
    {
        //java7 传统写法
        new Thread(new Runnable() {
            @Override
            public void run() {
                System.out.println(String.format("This is a thread(%s) via java7...",Thread.currentThread().getId()));
            }
        }).start();

        //java8 Lambda写法
        new Thread(() -> System.out.println(String.format("This is a thread(%s) via java8...",Thread.currentThread().getId()))).start();
    }
}

代码很简单,两种写法作用都是主线程中开启新的一个子线程,打印一句话。前者用了经典教科书上创建线程的写法之一;后者则用了Lambda表达式

() -> System.out.println(String.format("This is a thread(%s) via java8...",Thread.currentThread().getId()))

实现同样功能。

 

发现了吗?利用Java8中Lambda表达式将原本匿名内部类的一段代码简化为了1行。这也是笔者认为的Lambda最重要也是能最先具象展现给各位程序员的用途。现在还看不懂它是怎么做到的,没关系,请记住这句话:将原本匿名内部类的一段代码简化。接下来第二部分我们来重点看看Lambda表达式的构成及各部分的含义。

 

●Lambda表达式拆解

以第一部分为例:

new Thread(() -> System.out.println(String.format("This is a thread(%s) via java8...&
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值