关于Java 中的 Lambda 表达式

 更新时间:2021年11月16日 09:10:16   作者:海拥  
这篇文章主要介绍了关于Java 中的 Lambda 表达式,Lambda 表达式是 Java 涉足函数式编程的过程。它接受参数并将其应用于表达式或代码块,下面一起进入文章查看详细内容

这篇文章我们将讨论关于Java 中的 Lambda 表达式,Lambda 表达式是 Java 涉足函数式编程的过程。它接受参数并将其应用于表达式或代码块。以下是语法的基本示例:

(parameter1, parameter2) => expression

或者

(parameter1, parameter2) => {code block}

Lambda 表达式非常有限,如果它不是 void,则必须立即返回一个值。他们不能使用诸如 if for 之类的关键字来保持简单性。如果需要更多行代码,则可以改用代码块。

现在在实现 lambda 表达式时,不能只使用表达式。Lambda 是函数式接口的实现。函数式接口是只有一个抽象方法的接口。lambda 的好处是它们允许你实现方法而无需实现接口的类和实例化对象。

下面是一个例子:

interface FuncInterface
{
    // 抽象函数
    void abstractFun(int x);

    // 非抽象(或默认)函数
    default void normalFun()
    {
       System.out.println("Hello");
    }
}

class Test
{
    public static void main(String args[])
    {
        // 实现上述功能接口的 lambda 表达式。 
        // 该接口默认实现 abstractFun()
        FuncInterface fobj = (int x)->System.out.println(2*x);

        // 这会调用上面的 lambda 表达式并打印 10。
        fobj.abstractFun(5);
    }
}

Lambda 表达式通常用作函数的参数。为了提高可读性,你还可以将 lambda 表达式存储在变量中,只要该类型是一个只有一个方法、相同数量的参数和相同返回类型的接口。

import java.util.ArrayList;
import java.util.function.Consumer;

public class Main {
  public static void main(String[] args) {
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    numbers.add(5);
    numbers.add(9);
    numbers.add(8);
    numbers.add(1);
    Consumer<Integer> method = (n) -> { System.out.println(n); };
    numbers.forEach( method );
  }
}

lambda 的一个常见用途是创建线程。这是一个使用 lambda 代码块实现 Runnable 对象的示例,供线程执行。

// 可运行的 Lambda
Runnable task2 = () -> { System.out.println("Task #2 is running"); };

// 启动线程
new Thread(task2).start();

作为初学者,我们大多数人都被教导使用 OOP 概念进行编程,因此使用不同的范式(如函数式编程)可能会有些别扭。我自己仍在学习这些概念中。不管怎样我希望这篇文章能让大家学到一些东西。如果你有更多问题或想深入研究该主题,欢迎评论或者查看下方的资料,提取的代码示例也来自如下参考资料

参考资料:

www.geeksforgeeks.org/lambda-expr…
www.developer.com/microsoft/s…
www.codejava.net/java-core/t…

到此这篇关于关于Java 中的 Lambda 表达式的文章就介绍到这了,更多相关Java 中 Lambda 表达式内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • IDEA中Javaweb项目图片加载不出来解决方案

    IDEA中Javaweb项目图片加载不出来解决方案

    在IDEA中能够正常的预览到图片,但是在生成项目的war包时,项目的目录结构却会发生变化,所以无法访问图片,本文主要介绍了IDEA中Javaweb项目图片加载不出来解决方案,感兴趣的可以了解一下
    2023-10-10
  • 微信支付java版本之获取Access_token

    微信支付java版本之获取Access_token

    这篇文章主要介绍了微信支付java版本之获取Access_token,java如何获取Access_token,感兴趣的小伙伴们可以参考一下
    2016-08-08
  • java中@SuppressWarnings注解用法详解

    java中@SuppressWarnings注解用法详解

    这篇文章主要介绍了java中@SuppressWarnings注解用法详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-02-02
  • SpringBoot整合jasypt实现敏感信息的加密详解

    SpringBoot整合jasypt实现敏感信息的加密详解

    一般公司的核心业务代码中,都会存在与数据库、第三方通信的secret key等敏感信息,如果以明文的方式存储,一旦泄露,那将会给公司带来巨大的损失。本篇文章通过讲解:Springboot集成Jasypt对项目敏感信息进行加密,提高系统的安全性
    2022-09-09
  • Java 中DateUtils日期工具类的实例详解

    Java 中DateUtils日期工具类的实例详解

    这篇文章主要介绍了Java 中DateUtils日期工具类的实例详解的相关资料,有时候开发java项目使用日期类型,这里介绍下日期工具类,需要的朋友可以参考下
    2017-08-08
  • 如何在Spring Boot中实现异步处理与并发控制

    如何在Spring Boot中实现异步处理与并发控制

    本文我们将深入探讨如何在Spring Boot中实现异步处理与并发控制,这一过程涉及到异步任务的执行、线程池的配置、以及并发控制的实践,以帮助我们提升应用的性能和响应能力,感兴趣的朋友跟随小编一起看看吧
    2024-07-07
  • 解决nacos的yml配置文件解析@开头的值启动报错问题

    解决nacos的yml配置文件解析@开头的值启动报错问题

    这篇文章主要介绍了解决nacos的yml配置文件解析@开头的值启动报错问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-07-07
  • SpringBoot+TestNG单元测试的实现

    SpringBoot+TestNG单元测试的实现

    本文主要介绍了SpringBoot+TestNG单元测试的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-07-07
  • SpringBoot中多环境yml的配置与打包问题

    SpringBoot中多环境yml的配置与打包问题

    这篇文章主要介绍了SpringBoot中多环境yml的配置与打包问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-09-09
  • Java程序连接数据库的常用的类和接口介绍

    Java程序连接数据库的常用的类和接口介绍

    这篇文章主要介绍了Java程序连接数据库的常用的类和接口,包括Connection类和Statement类等,需要的朋友可以参考下
    2015-10-10

最新评论