Java Lambda 表达式各种用法,你都会了吗
创始人
2025-07-09 14:11:03
0

Lambda表达式是 Java 8 中引入的最有影响力的功能之一。它们通过允许简洁而优雅地创建匿名函数来实现 Java 中的函数式编程。在这篇博文中,我们将探讨编写 lambda 表达式的各种形式。

概述

lambda 表达式是可以具有参数和主体的匿名函数。正文可以包含零行、一行或多行代码,Lambda 表达式可以分配给类型为函数式接口(具有单个抽象方法的接口)的变量。

Lambda 表达式的各种编写形式

Java 中的Lambda 表达式 可以以各种形式编写,具体取决于它们所实现的函数式接口的抽象方法的签名。以下是编写 lambda 表达式的一些不同方法:

1.无参数,无返回值

如果抽象方法不带参数且不返回值,则  可以使用空括号和主体编写lambda 表达式:

() -> System.out.println("Hello, World!");

2. 单参数,无类型声明

如果抽象方法采用单个参数,则可以省略参数周围的括号,并且可以推断类型:

s -> System.out.println(s);

3.单参数,带类型声明

(String s) -> System.out.println(s);

4. 多个参数

如果抽象方法采用多个参数,则必须在参数两边加上括号。类型可以推断或显式声明:

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

5.有参数并且有返回值声明

如果 lambda 的主体由单个返回值的表达式组成,则可以直接编写:

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

如果主体由多个语句组成,则必须包含大括号并使用 return 语句:

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

6.无参数,返回值:

如果抽象方法不带参数但有返回值,可以这样写:

() -> 42;

示例:各种形式的 Lambda 表达式

这是一个简单的 Java 程序,演示了各种形式的 Lambda 表达式:

package com.example.spring.demo;

public class LambdaExample {

    public static void main(String[] args) {
        //无参数,无返回值:
        Runnable noParametersNoReturnValue = () -> System.out.println("Hello, World!");
        noParametersNoReturnValue.run(); // 输出: Hello, World!

        //单参数,无类型声明:
        java.util.function.Consumer singleParameterNoType = s -> System.out.println(s);
        singleParameterNoType.accept("Single Parameter, No Type!"); // 输出: Single Parameter, No Type!
        //单参数,带类型声明:
        java.util.function.Consumer singleParameterWithType = (String s) -> System.out.println(s);
        singleParameterWithType.accept("Single Parameter with Type!"); // 输出: Single Parameter with Type!

        //多个参数,无类型声明
        java.util.function.BiFunction multipleParametersTypeInferred = (a, b) -> a + b;
        System.out.println(multipleParametersTypeInferred.apply(5, 10)); // 输出: 15

        //多个参数,有类型声明
        java.util.function.BiFunction multipleParametersWithType = (Integer a, Integer b) -> a + b;
        System.out.println(multipleParametersWithType.apply(5, 10)); // 输出: 15

        // 多个参数,并且多行实现
        java.util.function.BiFunction multipleStatements = (a, b) -> {
            int sum = a + b;
            return sum;
        };
        System.out.println(multipleStatements.apply(5, 10)); // 输出: 15

        // 无参数,但是有返回值
        java.util.function.Supplier noParametersReturnValue = () -> 42;
        System.out.println(noParametersReturnValue.get()); // 输出: 42
    }
}

输出:

Hello, World!
Single Parameter, No Type!
Single Parameter with Type!
15
15
15
42

结论

lambda表达式的形式,具体取决于参数的数量和类型、是否包含显式类型声明以及主体是由单个表达式还是多个语句组成,Java 中Lambda 表达式的灵活性,使我们能够编写简洁且富有表现力的代码。

相关内容

热门资讯

如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
施耐德电气数据中心整体解决方案... 近日,全球能效管理专家施耐德电气正式启动大型体验活动“能效中国行——2012卡车巡展”,作为该活动的...
20个非常棒的扁平设计免费资源 Apple设备的平面图标PSD免费平板UI 平板UI套件24平图标Freen平板UI套件PSD径向平...
德国电信门户网站可实时显示全球... 德国电信周三推出一个门户网站,直观地实时提供其安装在全球各地的传感器网络检测到的网络攻击状况。该网站...
为啥国人偏爱 Mybatis,... 关于 SQL 和 ORM 的争论,永远都不会终止,我也一直在思考这个问题。昨天又跟群里的小伙伴进行...
《非诚勿扰》红人闫凤娇被曝厕所... 【51CTO.com 综合消息360安全专家提醒说,“闫凤娇”、“非诚勿扰”已经被黑客盯上成为了“木...
2012年第四季度互联网状况报... [[71653]]  北京时间4月25日消息,据国外媒体报道,全球知名的云平台公司Akamai Te...