0%

Lambda表达式

Lambda表达式是一个匿名函数,主要是为了简化代码,使代码变的更加简洁紧凑。详细了解点击这里:传送门

对于函数式接口,我们可以通过lambda表达式来创建该接口的对象。那什么是函数式接口呢?任何接口只包含唯一一个抽象方法,那么它就是一个函数式接口。

看看下边的示例,体会一下lambda表达式的魅力吧。

示例

定义一个函数式接口:

1
2
3
4
//定义一个函数式接口
interface Say {
void sayHello();
}

普通类

我们要使用这个接口,一般是这样的:写一个类然后实现其中的抽象方法

1
2
3
4
5
6
7
//1.实现类
public class MySay implements Say{
@Override
public void sayHello() {
System.out.println("hello!!!");
}
}

使用:

1
2
3
4
5
6
public class TestLambda {
public static void main(String[] args) {
Say mySay = new MySay();//1.实现类
mySay.sayHello();
}
}

内部类

若这个类只想使用一次,不想单独写在一个文件里,还能不能更加简洁呢?可以的,使用内部类

静态内部类

1
2
3
4
5
6
7
8
9
10
11
12
13
public class TestLambda {
//2.静态内部类
static class MySay2 implements Say{
@Override
public void sayHello() {
System.out.println("hello!!!hello!!!");
}
}
public static void main(String[] args) {
mySay = new MySay2();//2.静态内部类
mySay.sayHello();
}
}

局部内部类

1
2
3
4
5
6
7
8
9
10
11
12
13
public class TestLambda {
public static void main(String[] args) {
//3.局部内部类
class MySay3 implements Say{
@Override
public void sayHello() {
System.out.println("hello!!!hello!!!hello!!!");
}
}
mySay = new MySay3();
mySay.sayHello();
}
}

匿名内部类

1
2
3
4
5
6
7
8
9
10
11
public class TestLambda {
public static void main(String[] args) {
mySay = new Say() {//4.匿名内部类,没有类名,必须借助接口或者父类
@Override
public void sayHello() {
System.out.println("hello!!!hello!!!hello!!!hello!!!");
}
};
mySay.sayHello();
}
}

lambda表达式

匿名内部类能怎么写lambda表达式就能怎么写。

注意lambda表达式,需要jdk版本在1.8以上。

1
2
3
4
5
6
7
public class TestLambda {
public static void main(String[] args) {
//5.lambda表达式
mySay = ()-> System.out.println("hello!!!hello!!!hello!!!hello!!!hello!!!");
mySay.sayHello();
}
}

使用lambda表达式可以避免匿名内部类定义过多,可以让代码更加简洁只留下核心的逻辑。

学习自B站遇见狂神说

若图片不能正常显示,请在浏览器中打开

欢迎关注我的其它发布渠道