首页 分享 Lambda表达式以及变量捕获(java)

Lambda表达式以及变量捕获(java)

来源:花匠小妙招 时间:2025-05-03 10:20

阳光开朗积极进取 已于 2023-07-30 14:15:51 修改

于 2023-03-17 21:30:46 首次发布

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

本文介绍了Lambda表达式的基础知识,包括其作为JavaSE8的新特性,函数式接口的概念,Lambda的基本语法以及变量捕获的原则。通过示例展示了不同类型的Lambda表达式的使用,强调了Lambda是匿名内部类的简化形式,并提到了变量捕获时需注意final修饰或不可变性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文章目录 前言 一、函数式接口 二、Lambda表达式语法 三、Lambda表达式的基本使用 四、变量捕获 总结

前言

本人是一个刚刚上路的IT新兵,菜鸟!分享一点自己的见解,如果有错误的地方欢迎各位大佬莅临指导,如果这篇文章可以帮助到你,劳请大家点赞转发支持一下!

本文是为了后续的学习内容做铺垫,但是也不能放松警惕,也要好好学。

Lambda表达式是Java SE 8中一个重要的新特性。lambda表达式允许你通过表达式来代替功能接口。 lambda表达式就和方法一样,它提供了一个正常的参数列表和一个使用这些参数的主体(body,可以是一个表达式或一个代码块)。 Lambda 表达式(Lambda expression),基于数学中的λ演算得名,也可称为闭包(Closure) 。

在学习Lambda表达式前要先了解下函数式接口。

一、函数式接口

函数式接口定义:一个接口有且只有一个抽象方法 。

java的提供的集合中就有一些集合包含函数式接口,下面详细讲。
这里先讲解如何自定义类

//函数式接口与普通接口的唯一区别就在于 //只能有一个抽象方法 @FunctionalInterface //这个标识就是函数式接口的标志 interface Demo { //注意只能有一个抽象方法 void test(); } 1234567891011

再次强度, 只能有一个抽象方法

【注意】
1️⃣如果一个接口只有一个抽象方法(可以存在其他被default修饰的方法),那么该接口就是一个函数式接口

2️⃣如果我们在某个接口上声明了 @FunctionalInterface 注解,那么编译器就会按照函数式接口的定义来要求该接口,这样如果有两个抽象方法,程序编译就会报错的。所以,从某种意义上来说,只要你保证你的接口中只有一个抽象方法,你可以不加这个注解。加上就会自动进行检测的。

二、Lambda表达式语法

基本语法: (parameters) -> expression 或 (parameters) -> { statements; }
Lambda表达式由三部分组成:
1️⃣ (parameters) 是函数式接口里的抽象方法的参数列表。(参数列表的类型在一些规则下可以省略)

2️⃣ ->可理解为“被用于”的意思
3️⃣expression 或 (parameters) -> { statements; } 等同于抽象方法的方法体。(方法体在一定的规则下可以省略 ‘{}’ )

所以可以理解为,

该参数列表((parameters))被用于(->) 该方法体 (expression 或 (parameters) -> { statements; })

三、Lambda表达式的基本使用

//无返回值无参数 @FunctionalInterface interface NoParameterNoReturn { void test(); } public class Lambda { public static void main(String[] args) { NoParameterNoReturn lamdba = ()->System.out.println("无参数无return的Lambda表达式"); lamdba.test();//控制台输出 "无参数无return的Lambda表达式" 123456789101112

相关知识

Java Lambda表达式与方法引用
Qt基础 Lambda表达式
Kotlin 学习笔记 (九) 可怕的 lambda 及 高级函数
JAVA编程艺术
Java基础7
java之标示符、变量学习(一)
如何用java编写99朵玫瑰花
lamda表达式 Dispatcher.BeginInvoke(() =>
Java中+ 和 += 的有什么区别?
Java的代码书写规范

网址: Lambda表达式以及变量捕获(java) https://www.huajiangbk.com/newsview1841127.html

所属分类:花卉
上一篇: 高杆型互花米草(Spartina
下一篇: 李沐动手学深度学习V2

推荐分享