Java8新特性之lambda(动力节点Java学院整理)
发布时间 - 2026-01-11 01:35:35 点击率:次函数式接口

函数式接口(functional interface 也叫功能性接口,其实是同一个东西)。简单来说,函数式接口是只包含一个方法的接口。比如Java标准库中的java.lang.Runnable和java.util.Comparator都是典型的函数式接口。java 8提供 @FunctionalInterface作为注解,这个注解是非必须的,只要接口符合函数式接口的标准(即只包含一个方法的接口),虚拟机会自动判断,但 最好在接口上使用注解@FunctionalInterface进行声明,以免团队的其他人员错误地往接口中添加新的方法。 Java中的lambda无法单独出现,它需要一个函数式接口来盛放,lambda表达式方法体其实就是函数接口的实现,下面讲到语法会讲到
Lambda语法
包含三个部分
1. 一个括号内用逗号分隔的形式参数,参数是函数式接口里面方法的参数
2. 一个箭头符号:->
3. 方法体,可以是表达式和代码块,方法体函数式接口里面方法的实现,如果是代码块,则必须用{}来包裹起来,且需要一个return 返回值,但有个例外,若函数式接口里面方法返回值是void,则无需{}
总体看起来像这样
(parameters) -> expression 或者 (parameters) -> { statements; }
看一个完整的例子,方便理解
/**
* 测试lambda表达式
*
*/
public class TestLambda {
public static void runThreadUseLambda() {
//Runnable是一个函数接口,只包含了有个无参数的,返回void的run方法;
//所以lambda表达式左边没有参数,右边也没有return,只是单纯的打印一句话
new Thread(() ->System.out.println("lambda实现的线程")).start();
}
public static void runThreadUseInnerClass() {
//这种方式就不多讲了,以前旧版本比较常见的做法
new Thread(new Runnable() {
@Override
public void run() {
System.out.println("内部类实现的线程");
}
}).start();
}
public static void main(String[] args) {
TestLambda.runThreadUseLambda();
TestLambda.runThreadUseInnerClass();
}
}
可以看出,使用lambda表达式设计的代码会更加简洁,而且还可读。
方法引用
其实是lambda表达式的一个简化写法,所引用的方法其实是lambda表达式的方法体实现,语法也很简单,左边是容器(可以是类名,实例名),中间是"::",右边是相应的方法名。如下所示:
ObjectReference::methodName
一般方法的引用格式是
1. 如果是静态方法,则是ClassName::methodName。如 Object ::equals
2. 如果是实例方法,则是Instance::methodName。如Object obj=new Object();obj::equals;
3. 构造函数.则是ClassName::new
再来看一个完整的例子,方便理解
import java.awt.FlowLayout;
import java.awt.event.ActionEvent;
import javax.swing.JButton;
import javax.swing.JFrame;
/**
*
*/
public class TestMethodReference {
public static void main(String[] args) {
JFrame frame = new JFrame();
frame.setLayout(new FlowLayout());
frame.setVisible(true);
JButton button1 = new JButton("点我!");
JButton button2 = new JButton("也点我!");
frame.getContentPane().add(button1);
frame.getContentPane().add(button2);
//这里addActionListener方法的参数是ActionListener,是一个函数式接口
//使用lambda表达式方式
button1.addActionListener(e -> { System.out.println("这里是Lambda实现方式"); });
//使用方法引用方式
button2.addActionListener(TestMethodReference::doSomething);
}
/**
* 这里是函数式接口ActionListener的实现方法
* @param e
*/
public static void doSomething(ActionEvent e) {
System.out.println("这里是方法引用实现方式");
}
}
可以看出,doSomething方法就是lambda表达式的实现,这样的好处就是,如果你觉得lambda的方法体会很长,影响代码可读性,方法引用就是个解决办法
总结
以上就是lambda表达式语法的全部内容了,相信大家对lambda表达式都有一定的理解了,但只是代码简洁了这个好处的话,并不能打动很多观众,java 8也不会这么令人期待,其实java 8引入lambda迫切需求是因为lambda 表达式能简化集合上数据的多线程或者多核的处理,提供更快的集合处理速度 。
# java8新特性
# lambda
# java8
# Java8新特性lambda表达式有什么用(用法实例)
# Java8新特性之Lambda表达式浅析
# Java8 Lambda表达式详解及实例
# Java8中lambda表达式的应用及一些泛型相关知识
# Java8 新特性Lambda表达式实例详解
# Java8中的 Lambda表达式教程
# Java8新特性之lambda的作用_动力节点Java学院整理
# Java 8 动态类型语言Lambda表达式实现原理解析
# Java 8 lambda表达式引入详解及实例
# Java8深入学习系列(一)lambda表达式介绍
# 则是
# 是一个
# 有个
# 多核
# 可以看出
# 讲到
# 返回值
# 都是
# 是个
# 是因为
# 不多
# 有一定
# 也很
# 再来
# 更快
# 很长
# 所示
# 句话
# 并不能
# 讲了
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Laravel如何实现API版本控制_Laravel版本化API设计方案
Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解
Laravel Eloquent性能优化技巧_Laravel N+1查询问题解决
极客网站有哪些,DoNews、36氪、爱范儿、虎嗅、雷锋网、极客公园这些互联网媒体网站有什么差异?
如何在万网ECS上快速搭建专属网站?
专业企业网站设计制作公司,如何理解商贸企业的统一配送和分销网络建设?
宙斯浏览器视频悬浮窗怎么开启 边看视频边操作其他应用教程
Laravel怎么在Blade中安全地输出原始HTML内容
微信小程序 配置文件详细介绍
laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法
香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化
通义万相免费版怎么用_通义万相免费版使用方法详细指南【教程】
消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工
Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】
JavaScript如何实现路由_前端路由原理是什么
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置
如何在VPS电脑上快速搭建网站?
如何挑选高效建站主机与优质域名?
javascript和jQuery中的AJAX技术详解【包含AJAX各种跨域技术】
黑客如何通过漏洞一步步攻陷网站服务器?
电商网站制作价格怎么算,网上拍卖流程以及规则?
Laravel如何发送系统通知?(Notification渠道示例)
怎么制作一个起泡网,水泡粪全漏粪育肥舍冬季氨气超过25ppm,可以有哪些措施降低舍内氨气水平?
Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤
如何快速配置高效服务器建站软件?
如何在万网自助建站中设置域名及备案?
原生JS实现图片轮播切换效果
网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
Linux安全能力提升路径_长期防护思维说明【指导】
Bootstrap整体框架之JavaScript插件架构
如何快速查询网站的真实建站时间?
深圳网站制作公司好吗,在深圳找工作哪个网站最好啊?
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
网站建设整体流程解析,建站其实很容易!
如何用狗爹虚拟主机快速搭建网站?
Laravel如何实现密码重置功能_Laravel密码找回与重置流程
Python企业级消息系统教程_KafkaRabbitMQ高并发应用
网站制作价目表怎么做,珍爱网婚介费用多少?
如何将凡科建站内容保存为本地文件?
JS中页面与页面之间超链接跳转中文乱码问题的解决办法
宙斯浏览器怎么屏蔽图片浏览 节省手机流量使用设置方法
Laravel事件监听器怎么写_Laravel Event和Listener使用教程
如何在Tomcat中配置并部署网站项目?
如何在阿里云虚拟主机上快速搭建个人网站?
iOS UIView常见属性方法小结
Laravel怎么判断请求类型_Laravel Request isMethod用法
国美网站制作流程,国美电器蒸汽鍋怎么用官方网站?
Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境

