Lambda表达式

80 阅读1分钟

1. 函数式编程

函数式编程(Functional programming)是一种思想特点。

在面向对象当中,我们先找对象,让对象做事情。例如下面的数组排序。

image-20220915201906960

函数式编程思想,忽略面向对象的复杂语法,强调做什么,而不是谁去做

image-20220915202752372

Lambda表达式就是函数式思想的体现。

2. Lambda表达式

Lambda表达式是JDK8开始后的一种新的语法形式。

image-20220915203117314

注意点:

  1. Lambda表达式可以用来简化匿名内部类的书写

  2. Lambda表达式只能简化函数式接口的匿名内部类的写法

  3. 函数式接口

    有且仅有一个抽象方法的接口叫作函数式接口,接口上方可以加**@FuunctionalInterface**注解

2.1 匿名内部类

我们知道调用一个方法时,如果方法的形参是一个接口,那么我们要传递这个接口的实现类对象。而如果实现类对象只要用到一次,我们没有必要新建一个类实现该接口,可以使用匿名内部类的形式进行书写。

//一个接口
interface Swim {
    public abstarct void swimming();
}
//定义一个方法method,形参为上面的接口
public static void method(Swim s) {
    s.swimming();
}

image-20220915205738459

2.2 Lambda表达式改写

函数式接口:有且仅有一个抽象方法的接口叫作

image-20220915210336551

image-20220915210946082

image-20220915210533031

2.3 Lambda表达式的省略写法

省略规则:

  1. 参数类型可以省略
  2. 如果只有一个参数,参数类型可以省略,同时()也可以省略
  3. 如果Lambda表达式的方法体只有一行,大括号、分好、return可以省略不写。需要同时省略

image-20220915211626595

image-20220915211815824

2.4 简单实例

image-20220915212223933

image-20220915212416525

image-20220915212510255

3. 总结

内容来自黑马程序员