jdk1.8新特性--lambda表达式
2022/2/15 23:11:46
本文主要是介绍jdk1.8新特性--lambda表达式,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
入门
是什么
lambda表达式是jdk1.8的新特性,它本质上是一种匿名函数。
什么时候用
如果一个方法的参数是一个接口,一般来说我们使用这个方法的时候会使用匿名内部类。现在,我们则可以使用lambda表达式替代匿名内部类。
怎么用
lambda表达式格式
(参数列表) -> {方法语句}
举例
首先我们新建一个接口test
public interface test { void getTest(); }
然后我们新建一个带有主方法的类Test01
public class Test01 { public static void main(String[] args) { //匿名内部类方式调用接口 getStudent(new test() { @Override public void getTest() { System.out.println("hello"); } }); //lambda表达式调用接口 getStudent(() -> { System.out.println("hello lambda"); }); } public static void getStudent(test name){ System.out.println("getStudent 执行了"); name.getTest(); } }
了解
执行过程分析
匿名内部类执行方式
在代码编译的时候,会生成一个class文件。可使用luyten进行反编译。
lambda表达式执行方式
在代码运行的时候会在Test01中新建一个静态方法,静态方法中是lambda表达式中的代码,然后新建一个匿名内部类,在匿名内部类中覆盖重写接口中的方法,同时在其内调用新建的静态方法。
lambda表达式的省略格式
可以省略的内容:
- 入参的数据类型
- 如果大括号内只有一行代码,return 大括号 分号可以同时省略(注意:不能只省略一个)
- 如果小括号内只有一个参数可以省略小括号
使用lambda表达式的前提条件
- 方法参数必须是接口
- 借口内必须有且仅有一个抽象方法
如果一个接口有且仅有一个抽象方法,则这个接口即为函数式接口。
注解@FunctionInterface放在接口定义的上面,即表示其为函数式接口。
使用
使用lambda表达式的优点有很多,除了显而易见的简洁之外,还能从一定程度上避免内存泄漏,详情可见如下链接:
https://www.zhihu.com/question/447582599
这篇关于jdk1.8新特性--lambda表达式的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-09-28微服务架构中API版本控制的实践
- 2024-09-28AI给的和自己写的Python代码,都无法改变输入框的内容,替换也不行
- 2024-09-27Sentinel配置限流资料:新手入门教程
- 2024-09-27Sentinel配置限流资料详解
- 2024-09-27Sentinel限流资料:新手入门教程
- 2024-09-26Sentinel限流资料入门详解
- 2024-09-26Springboot框架资料:初学者入门教程
- 2024-09-26Springboot框架资料详解:新手入门教程
- 2024-09-26Springboot企业级开发资料:新手入门指南
- 2024-09-26SpringBoot企业级开发资料新手指南