0
点赞
收藏
分享

微信扫一扫

Lambda表达式的基本使用

王栩的文字 2022-04-26 阅读 47
javalambda

概述

介绍

Lambda表达式就是对某一个接口方法的实现,可以替代我们以前经常写的匿名内部类来实现接口方法,本质是一个匿名函数

使用的要求

接口必须是函数式接口,也就是说这个接口有且仅有一个抽象方法,但是可以有多个非抽象方法

函数式接口

函数式接口示例代码如下:(add是抽象方法,add1和add2是非抽象方法)

@FunctionalInterface
interface MyInterface1 {
    
    int add(int a, int b);

    static int add1(int a, int b) {
        return a + b;
    }

    static int add2(int a, int b, int c) {
        return a + b + c;
    }
}

使用@FunctionalInterface注解后,编译器将会强制检查该接口是否确实有且仅有一个抽象方法,否则将会报错。不使用这个注解也是可以的,这个注解只是用来检查是否是函数式接口,没有其它作用,只要接口只有一个抽象方法那它就是函数式接口,和注解没有任何关系

Lambda表达式格式

(参数列表)->{方法体}

说明:

() :用来描述参数列表

{} :用来描述方法体

-> :Lambda运算符,可以叫做箭头符号,或者goes to

代码实现

定义函数式接口

@FunctionalInterface
interface MyInterface1 {
    int add(int a, int b);
}

使用匿名内部类

package lambda;

/**
 * @author LeDao
 * @company
 * @create 2022-04-26 0:50
 */
public class LambdaTest {
    public static void main(String[] args) {

        MyInterface m1 = new MyInterface() {
            @Override
            public int add(int a, int b) {
                return a + b;
            }
        };
        System.out.println(m1.add(1, 2));
    }
}

使用Lambda表达式

在上面的接口中,int a, int b是参数列表,方法体是接口的实现(根据接口名称应该知道方法体是return a+b;),所以Lambda表达式如下所示:

package lambda;

/**
 * @author LeDao
 * @company
 * @create 2022-04-26 0:50
 */
public class LambdaTest {
    public static void main(String[] args) {

        MyInterface m2 = (int a, int b) -> {
            return a + b;
        };
        System.out.println(m2.add(2, 3));
    }
}

Lambda表达式简写规则

参数类型可以省略,因为可以根据接口方法知道参数的类型

当参数只有一个时,括号()可以省略,如果有两个及以上的参数括号不可以省略

当方法体的语句只有一条时,可以省略大括号{}

简写上面的Lambda表达式

根据Lambda表达式简写规则可以将上面的代码简写,代码如下所示:

package lambda;

/**
 * @author LeDao
 * @company
 * @create 2022-04-26 0:50
 */
public class LambdaTest {
    public static void main(String[] args) {

        MyInterface m2 = (a, b) -> a + b;
        System.out.println(m2.add(2, 3));
    }
}
举报

相关推荐

0 条评论