Lambda 表达式
1、一个匿名函数,一段可以像数据一样传递的代码
2、语法格式
(1)(parameters) -> expression;
(2)(parameters) -> {statements;}
3、Lambda 操作符 / 箭头操作符:->
(1)左方:Lambda 形参列表:抽象方法的形参
(2)右方:Lambda 体:重写抽象方法的方法体
4、可选项
(1)类型声明,形参列表的参数不需要声明类型,编译器可以统一识别
(2)():若形参列表只有一个参数,() 可以省略;没有参数 / 有多个参数,() 不可以省略
(3){}:Lambda 体只有一条语句,{} 可以省略;多条语句,{} 不可省略
(4)return:Lambda 体没有 {},return 可以省略;有{},return 不可省略,即 return 跟随 {}
5、使用前提
(1)基于接口的匿名内部类
(2)接口有且只有一个抽象方法,即函数式接口
6、lambda 表达式可以捕获外围作用域中变量的值
(1)在 lambda 表达式中,只能引用值不会改变的变量
(2)如果在 lambda 表达式中更改变量,并发执行多个动作时就会不安全
(3)如果在 lambda 表达式中引用一个变量,而这个变量可能在外部改变,这是不合法的
(4)lambda 表达式中捕获的变量必须实际上是事实最终变量
(5)事实最终变量是指,这个变量初始化之后就不会再为它赋新值
7、lambda 表达式的体与嵌套块有相同的作用域
(1)同样适用命名冲突和遮蔽的有关规则
(2)在 lambda 表达式中声明与一个局部变量同名的参数或局部变量是不合法的
(3)在一个 lambda 表达式中使用 this 关键字时,是指创建这个 lambda 表达式的方法的 this 参数
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战