Java 8 新特性系列 – Lambda表达式
Java8 终于引入了 Lambda 表达式,在此之前,传言会在 Java 7 中引入次功能。
1 什么是 Lambda
使用过 Python、C# 的应该对此不会陌生,百度百科对 Lambda 表达式的解释为:
Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。
百度百科
由解释可以大致知道,Lambda 表达式基本上就是匿名函数的一种简单写法,相当于语法糖,使用 Lambda 可以有效的节省代码量。
1.1 基本语法
(parameters) ->{statements;}
1.2 示例
典型的一个示例就是线程的使用,不过为了演示参数,暂以 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 未实现的方法,而新写法,省去了类名、方法名等内容,只留下了方法参数名、方法体。
2 限制与特殊情况
- 接口或者抽象类,有且仅有一个方法需要实现,才能使用Lambda
- 有且仅有一个参数,则参数外的小括号可省略
- 无返回值,且方法体只有一句话,则方法体的大括号可以省略,这句代码的分号要省略掉。
根据特殊情况,上个段落的代码最终可以简写为:
button.addActionListener(actionEvent-> System.out.println("Action detected"));
本文作者:六楼的雨
本文链接:https://www.cnblogs.com/sixlab/p/17047576.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步