欢迎光临
六楼实验室
网站运行 3117天 | 文章 89 篇 | 分类 15 个 | 标签 58 个

Java 8 新特性系列 – Lambda表达式

一、Lambda

Java8 终于引入了 Lambda 表达式,在此之前,传言会在 Java 7 中引入次功能。

1.1 什么是 Lambda

使用过 Python、C# 的应该对此不会陌生,百度百科对 Lambda 表达式的解释为:

Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。

百度百科

由解释可以大致知道,Lambda 表达式基本上就是匿名函数的一种简单写法,相当于语法糖,使用 Lambda 可以有效的节省代码量。

1.2 基本语法

(parameters) ->{statements;}

1.2.1 示例

典型的一个示例就是线程的使用,不过为了演示参数,暂以 Android 中给按钮绑定事件的代码为例,Java8以前的写法:

button.addActionListener(new ActionListener(){
    @Override
    public void actionPerformed(ActionEvent actionEvent){
        System.out.println("Action detected");
    }
});

使用 Lambda 的写法:

button.addActionListener((actionEvent)-> {
    System.out.println("Action detected");
});

可以看到,以前的写法,要先 new 一个 接口/类,然后在类中 override 未实现的方法,而新写法,省去了类名、方法名等内容,只留下了方法参数名、方法体。

1.2.2 限制与特殊情况

  1. 如果接口或者抽象类,有多余一个的方法需要实现,则不能使用Lambda
  2. 有且仅有一个参数,则参数外的小括号可省略
  3. 无返回值,且方法体只有一句话,则方法体的大括号可以省略
赞(0) 打赏
未经允许不得转载:六楼实验室 » Java 8 新特性系列 – Lambda表达式
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址

六楼实验室 · 矿软科技

六楼实验室矿软科技

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏

css.php