Lambda表达式
2020-07-21 本文已影响0人
MHLEVEL
内容整理自bilibili 参考链接
一、lambda表达式的简介
lambda表达式是java8添加的新特性; Lambda是一个匿名函数。使用lambda表达式可以对一个接口进行非常简单的实现。但是并不是所有接口都可以用lambda表达式来实现,要求接口中定义的必须要实现的抽象方法只能是一个。
Lambda 表达式中的有关符号的解释
() : 用来描述参数列表
{} : 用来描述方法体
-> : Lambda 运算符,读作goes to
/**
* @author superquanbin@gmail.com
* @date 2020-07-21 21:02
*/
public class Program {
public static void main(String[] args) {
// 通过实例化接口的类对象的引用
MyComparator myComparator = new MyComparator();
// 使用匿名内部类
Comparator comparator1 = new Comparator() {
@Override
public int compare(int a, int b) {
return a - b;
}
};
// 使用 lambda 表达式
Comparator comparator2 = (a, b) -> a - b;
}
}
class MyComparator implements Comparator{
@Override
public int compare(int a, int b) {
return a - b;
}
}
interface Comparator{
int compare(int a, int b);
}
从普通方法到lambda表达式在格式上的不同
二、一个简单lambda 表达式从定义到使用的过程
【1. 定义接口】
public interface LambdaNoneReturnMutipleParameter {
void test(int a, int b);
}
接口案例
【2. lambda 表达式实现】(以下代码中包含多个接口的lambda表达式的实现)
/**
* @author superquanbin@gmail.com
* @date 2020-07-21 21:51
*/
public class Syntax1 {
public static void main(String[] args) {
// 无返回值无参数
LambdaNoneReturnNoneParameter lambdaNoneReturnNoneParameter = () -> {
System.out.println("this is LambdaNoneReturnNoneParameter impl");
};
// 无返回值单个参数
LambdaNoneReturnSingleParameter lambdaNoneReturnSingleParameter = (int a) -> {
System.out.println(a);
};
lambdaNoneReturnSingleParameter.test(10);
// 无返回值多个参数
LambdaNoneReturnMutipleParameter lambdaNoneReturnMutipleParameter = (int a, int b) -> {
System.out.println(a - b);
};
lambdaNoneReturnMutipleParameter.test(19,3);
// 有返回值无参数
LambdaSingleReturnNoneParameter lambdaSingleReturnNoneParameter = () -> {
return 0;
};
int a = lambdaSingleReturnNoneParameter.test();
System.out.println(a);
}
}
三、lambda 表达式精简
省略参数类型单个参数的可以省略括号
如果方法体中只有一条语句的话可以对大括号say byebye
🚔⚠️ 方法体中有返回值时去掉大括号的话要把return也去掉 👌
四、lambda 表达式进阶
引用方法引用:
可以快速的将一个Lambda表达式的实现指向一个已经实现的方法
语法:方法的隶属者::方法名
注意:
- 参数数量和类型一定要和接口中定义的方法一致
- 返回值类型一定要和接口中定义的方法一致