【响应式编程-02】Lambda的语法格式和使用

发布时间:2024年01月03日

一、简要描述

  • Lambda的语法格式
  • Lambda的使用

二、Lambda的语法格式

  • (parameters) -> {statements;}
  • (pararmeters) -> expression

1、(parameters) -> {statements;}

  • parameters: 函数的参数列表
  • statements: 执行语句
  • -> : 使用指定参数去完成某个功能
public int method(int a, int b) {
    /* 方法体 */
    return a + b;
}

......

(int a, int b) -> {return a + b;}

2、(parameters) -> expression

  • parameters: 函数的参数列表
  • expression: 表达式
  • -> : 使用指定参数去完成某个功能
public int method(int a, int b) {
    /* 方法体 */
    return a + b;
}

......

(int a, int b) -> a + b;

三、Lambda的使用

  • 可选的大括号{}

函数体只包含一个语句,不需要大括号

  • 可选的参数圆括号()

只有一个参数,省略圆括号,同时省略类型

  • 可选的返回关键字return

函数体只有一个表达式,且运算结果匹配返回类型

  • 可选的类型声明

不需要参数类型,编译器可以根据参数值进行推断

1、可选的大括号{}

// 1、函数体只有一个语句,省略大括号
(String msg) -> System.out.println("hello" + msg);

2、可选的参数圆括号()

// 2、只有一个参数,省略圆括号,同时省略类型
msg -> System.out.println("hello" + msg);

3、可选的返回值关键字return

// 3、函数体只有个表达式,省略return
(int a, int b) -> a + b;

4、可选的类型声明

// 4、省略参数类型,编译器可以进行推断
(a, b) -> a + b;

四、代码实现

  • 语法:

????????(parameters) -> { statements; }

????????或

????????parameters) -> expression

  • Lambda表达式与函数式接口的抽象函数格式一一对应

????????前提: 必须有一个函数式接口(@FunctionalInterface)

  • 代码演示:
    • 0.Lambda表达式的基本格式
    • 1.省略大括号
    • 2.省略参数类型和大括号
    • 3.省略小括号
    • 4.省略参数类型和大括

1、定义IGreeting接口

package tech.flygo.lambda.demo2;

/**
 * @description:
 * @author: flygo
 * @time: 2023/5/13 16:58
 */
@FunctionalInterface
public interface IGreeting {

    void sayHello(String name);
}

2、定义IMathOperation接口

package tech.flygo.lambda.demo2;

/**
 * @description:
 * @author: flygo
 * @time: 2023/5/13 16:56
 */
@FunctionalInterface
public interface IMathOperation {

    int operation(int a, int b);
}

3、Lambda表达式测试类 LambdaSyntaxTest

package tech.flygo.lambda.demo2;


/**
 * 语法:
 * (parameters) -> { statements; }
 * 或
 * (parameters) -> expression
 * <p>
 * Lambda表达式与函数式接口的抽象函数格式一一对应
 * 前提: 必须有一个函数式接口(@FunctionalInterface)
 * <p>
 * 代码演示:
 * 0.Lambda表达式的基本格式
 * 1.省略大括号
 * 2.省略参数类型和大括号
 * 3.省略小括号
 * 4.省略参数类型和大括号
 */

/**
 * @description: Lambda表达式测试类
 * @author: flygo
 * @time: 2023/5/13 16:59
 */

public class LambdaSyntaxTest {

    public static void main(String[] args) {
        // 0.Lambda表达式的基本格式
        IMathOperation mo0 = (int a, int b) -> {
            return a + b;
        };
        System.out.println(mo0.operation(1, 2));

        // 1.省略大括号
        IGreeting greeting = (String msg) -> System.out.println("hello " + msg);
        greeting.sayHello("lambda");

        // 2.省略小括号
        greeting = msg -> System.out.println("hello " + msg);
        greeting.sayHello("FlyGo");

        // 3.省略return
        IMathOperation mo1 = (int a, int b) -> a - b;
        System.out.println(mo1.operation(3, 4));

        // 4.省略参数类型和大括号
        IMathOperation mo2 = (a, b) -> a * b;
        System.out.println(mo2.operation(3, 4));
    }
}
文章来源:https://blog.csdn.net/weixin_42257984/article/details/135371602
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。