一、前言
1.什么是Lambda表达式
Lambda表达式是java1.8新特性,Lambda表达式是一种匿名函数,可以作为参数传递给其他函数或方法,并且可以在需要时动态创建,主要用途是简化代码。
2.为什么要使用Lambda表达式
使用lambda表达式的主要优点是代码简洁和可读性高。使用lambda表达式可以将一个函数作为数据传递给其他函数或方法,这种函数式编程的思想被广泛应用于现代编程中,可以使代码更加简洁,易于维护和重用。
另外,使用lambda表达式可以避免冗长的代码,因为它不需要显式地定义一个函数,而是直接嵌入到需要它的地方。这样就可以避免因为函数定义重复、命名相似等问题而导致的代码的可读性较差的问题。同时,lambda表达式可以提高代码的执行效率,因为它们能够减少因为创建对象和调用方法带来的额外开销。
二、了解Lambda表达式
1.Lambda的标准格式
在看到方法参数是接口的时候就可以使用Lambda表达式:
语法:( )->{ }
Lambda表达式就是一个匿名函数,而函数相当于java中方法。
语法解析
( ):参数列表,将参数写在括号内;
->:没有实际含义主要用于连接的作用;
{ }:方法体;
有参数的Lambda表达式,直接在()括号内写入即可。
详细要求查看4.使用Lambda表达式的前提条件
2.Lambda的底层原理
匿名内部类在编译的时候会生成一个class文件。
Lambda在程序运行的时候会形成一个类。
1.在类中会生成一个方法,而这个方法中的方法体就是Lambda表达式中的代码。
2.还会生成一个匿名内部类,实现接口,重写抽象方法。
3.在接口的重写方法中还会调用生成的方法。
3.优化Lambda表达式
在lambda的基础上可以使用省略写法
1.小括号内参数类型可以省略不写。
2.如果小括号内有且仅有一个参数,则小括号可以不写。
3.如果大括号内有且仅有一个语句,则同时可以省略大括号、return关键字及语句分号
(int a)->{ return new Person(); } //优化 a-> new Person()
4.使用Lambda表达式的前提条件
虽然使用Lambda表达式语法非常简洁,但是lambda不是随随便便用的,使用时有几个条件需要特别注意:
1.方法中的参数或者局部变量的类型必须是接口。
2.接口中有且只有一个抽象方法。
package xw.lambda; /** * @author xw * */ public class Test01 { public static void main(String[] args) { //方法的参数或者局部变量类型必须为接口才能使用Lambda表达式 ttt(()->{ }); Flyable f=()->{ System.out.println("这就是Lambda表达式"); }; } public static void ttt(Flyable b) { } }
三、总结Lambda与匿名内部类的区别
1.所需的类型不一致
匿名内部需要的类型可以是类、抽象类、接口。
lambda表达式需要的接口只能是接口。
2.抽象方法的数量不同
匿名内部类所需接口中的抽象方法的数量随意。
lambda表达式所需接口中的抽象方法有且只有一个。
3.实现方法原理不同
匿名内部类是在编译后形成class。
lambda表达式是程序的运行的时候动态生成class。
当接口中只有一个抽象方法时,建议使用lambda表达式,其他情况还是建议使用匿名方式。
看到这里Lambda表达式的简单介绍就结束了,点个赞再走吧!!