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表达式的实现指向一个已经实现的方法
语法:方法的隶属者::方法名
注意:

  1. 参数数量和类型一定要和接口中定义的方法一致
  2. 返回值类型一定要和接口中定义的方法一致
上一篇下一篇

猜你喜欢

热点阅读