Java8 lambda表达式2种常用方法代码解析

 更新时间:2020年08月06日 11:08:28   作者:志不坚者智不达  
这篇文章主要介绍了Java8 lambda表达式2种常用方法代码解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

与python不一样,python lambda是定义匿名函数,而在java8中lambda是匿名内部类

例1、用lambda表达式实现Runnable

我开始使用Java 8时,首先做的就是使用lambda表达式替换匿名类,而实现Runnable接口是匿名类的最好示例。看一下Java 8之前的runnable实现方法,需要4行代码,而使用lambda表达式只需要一行代码。我们在这里做了什么呢?那就是用() -> {}代码块替代了整个匿名类。

// Java 8之前:
new Thread(new Runnable() {
  @Override
  public void run() {
  System.out.println("Before Java8, too much code for too little to do");
  }
}).start();

//Java 8方式:
new Thread( () -> System.out.println("In Java8, Lambda expression rocks !!") ).start();

输出:

too much code, for too little to do
Lambda expression rocks !!

这个例子向我们展示了Java 8 lambda表达式的语法。你可以使用lambda写出如下代码:

(params) -> expression
(params) -> statement
(params) -> { statements }

例如,如果你的方法不对参数进行修改、重写,只是在控制台打印点东西的话,那么可以这样写:

() -> System.out.println("Hello Lambda Expressions");

如果你的方法接收两个参数,那么可以写成如下这样:

(int even, int odd) -> even + odd

顺便提一句,通常都会把lambda表达式内部变量的名字起得短一些。这样能使代码更简短,放在同一行。所以,在上述代码中,变量名选用a、b或者x、y会比even、odd要好。

例2、使用Java 8 lambda表达式进行事件处理

如果你用过Swing API编程,你就会记得怎样写事件监听代码。这又是一个旧版本简单匿名类的经典用例,但现在可以不这样了。你可以用lambda表达式写出更好的事件监听代码,如下所示:

// Java 8之前:
JButton show = new JButton("Show");
show.addActionListener(new ActionListener() {
  @Override
  public void actionPerformed(ActionEvent e) {
  System.out.println("Event handling without lambda expression is boring");
  }
});

// Java 8方式:
show.addActionListener((e) -> {
  System.out.println("Light, Camera, Action !! Lambda expressions Rocks");
});

Java开发者经常使用匿名类的另一个地方是为 Collections.sort() 定制 Comparator。在Java 8中,你可以用更可读的lambda表达式换掉丑陋的匿名类。我把这个留做练习,应该不难,可以按照我在使用lambda表达式实现 Runnable 和 ActionListener 的过程中的套路来做。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • SpringBoot设置接口超时的方法小结

    SpringBoot设置接口超时的方法小结

    这篇文章主要介绍了SpringBoot设置接口超时的方法小结,包括配置文件,config配置类及相关示例代码,代码简单易懂,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-09-09
  • Java Calendar类常用示例_动力节点Java学院整理

    Java Calendar类常用示例_动力节点Java学院整理

    从JDK1.1版本开始,在处理日期和时间时,系统推荐使用Calendar类进行实现。接下来通过实例代码给大家详细介绍Java Calendar类相关知识,需要的朋友参考下吧
    2017-04-04
  • java中throws实例用法详解

    java中throws实例用法详解

    在本篇文章里小编给大家分享了一篇关于java中throws实例用法详解,有兴趣的朋友们可以参考学习下。
    2021-01-01
  • OutOfMemoryError内存不足和StackOverflowError堆栈溢出示例详解

    OutOfMemoryError内存不足和StackOverflowError堆栈溢出示例详解

    这篇文章主要为大家介绍了OutOfMemoryError内存不足和StackOverflowError堆栈溢出示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • java跳出多重循环的三种实现方式

    java跳出多重循环的三种实现方式

    文章主要介绍了Java中跳出多重循环的三种方式:使用`break`配合标签、在布尔表达式中添加判断变量、以及使用`try-catch`制造异常,每种方式都有具体的代码示例,并输出了相应的执行结果
    2025-01-01
  • 基于Java 利用Mybatis实现oracle批量插入及分页查询

    基于Java 利用Mybatis实现oracle批量插入及分页查询

    这篇文章主要介绍了基于Java 利用Mybatis实现oracle批量插入及分页查询,文章围绕主题展开详细的内容介绍,需要的小伙伴可以参考一下
    2022-07-07
  • j2ee之AJAX二级联动效果

    j2ee之AJAX二级联动效果

    这篇文章主要为大家详细介绍了j2ee之AJAX二级联动效果的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • java8保姆级lambda表达式教程

    java8保姆级lambda表达式教程

    这篇文章主要介绍了Java8之后的Lambda表达式的用法,lambda表达式将大量替代匿名内部类的使用,简化代码的同时,更突出了原来匿名内部类中最重要的那部分包含真正逻辑的代码,需要的朋友可以参考下
    2023-03-03
  • 浅谈为什么重写equals()就要重写hashCode()

    浅谈为什么重写equals()就要重写hashCode()

    困扰我很久的问题,一直不明白为什么重写equals()方法的时候要重写hashCode()方法,这次总算弄明白了,作此分享,感兴趣的可以了解一下
    2021-10-10
  • spring boot 使用Mybatis-plus查询方法解析

    spring boot 使用Mybatis-plus查询方法解析

    这篇文章主要介绍了spring boot 使用Mybatis-plus查询方法解析,文章围绕主题展开详细的内容介绍,具有一定的参考价值,需要的小伙伴可以参考一下
    2022-09-09

最新评论