Java中lamda表达式的演进
2023-04-07 16:51:43

1.为什么会有lamda表达式?

避免匿名内部类定义过多,简化代码

2.lamda表达式是什么?

首先需要知道什么是函数式接口,函数式接口是只有一个抽象方法的接口,lamda表达式可以用来表示函数式接口的实现类,如下是一个简单的接口和实现类

1
2
3
4
5
6
7
8
9
10
11
//定义一个函数式的接口
interface Lam{
void lamda();
}
//1.定义函数式接口的实现类
class Lamimpl implements Lam
@Override
public void lamda() {
System.out.println("lamdaimpl1");
}
}

使用lamda可以表示为如下,只重视参数类型和方法体,方法体只有一句代码的时候{}也可以省略

1
Lam lam =()-> {System.out.println("lamda表达式创建!")};

3.lamda表达式的推演过程

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
public class Lamda {
//2.静态内部类
static class Lamimpl2 implements Lam {
@Override
public void lamda() {
System.out.println("lamdaimpl2");
}
}
public static void main(String[] args) {
Lam lam = new Lamimpl();
lam.lamda();
lam = new Lamimpl2();
lam.lamda();
//3.局部内部类
class Lamimpl3 implements Lam {
@Override
public void lamda() {
System.out.println("lamdaimpl3");
}
}
lam = new Lamimpl3();
lam.lamda();
//4.匿名内部类
lam = new Lam() {
@Override
public void lamda() {
System.out.println("lamdaimpl4");
}
};
lam.lamda();
//5.lam表达式,简化匿名内部类,用来创建函数式接口(只有一个抽象方法的接口)的对象
lam = () -> System.out.println("lamda表达式创建!");
lam.lamda();
}
}
//定义一个函数式的接口
interface Lam {
void lamda();
}
//1.定义函数式接口的实现类
class Lamimpl implements Lam {
@Override
public void lamda() {
System.out.println("lamdaimpl1");
}
}
Prev
2023-04-07 16:51:43
Next