JavaSE-Lambda表达式

2019-12-09  本文已影响0人  雷哒哒

目录

[TOC]

第一章:函数式编程介绍

在数学中,函数就是有输入量、输出量的一套计算方案,也就是“拿什么东西做什么事情”。相对而言,面向对象过

分强调“必须通过对象的形式来做事情”,而函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以

什么形式做。

面向对象的思想: 做一件事情,找一个能解决这个事情的对象,调用对象的方法,完成事情。

函数式编程思想: 只要能获取到结果,谁去做的,怎么做的都不重要,重视的是结果,不重视过程 。

第二章: 冗余的Runnable代码

第三章: 编程思想转换

第四章:体验Lambda的更优写法

​ 借助Java 8的全新语法,上述 Runnable 接口的匿名内部类写法可以通过更简单的Lambda表达式达到等效:

public class Test {
  public static void main(String[] args) {
    new Thread(()->System.out.println("多线程任务执行!")).start();
  }
}

​ 这段代码和刚才的执行效果是完全一样的,可以在1.8或更高的编译级别下通过。从代码的语义中可以看出:我们启动了一个线程,而线程任务的内容以一种更加简洁的形式被指定。

​ 不再有“不得不创建接口对象”的束缚,不再有“抽象方法覆盖重写”的负担,就是这么简单!

第五章:Lambda标准格式

第六章:无参数无返回值的代码

第七章:有参数有返回值的代码

第八章:Lambda省略格式

可推导即可省略。

第九章:Lambda使用前提

Lambda的语法非常简洁,完全没有面向对象复杂的束缚。但是使用时有几个问题需要特别注意:

  1. 使用Lambda必须具有接口,且要求接口中有且仅有一个抽象方法。

    无论是JDK内置的 Runnable 、 Comparator 接口还是自定义的接口,只有当接口中的抽象方法存在且唯一时,才可以使用Lambda。

  2. 使用Lambda必须具有上下文推断。

    也就是方法的参数或局部变量类型必须为Lambda对应的接口类型,才能使用Lambda作为该接口的实例。

备注:有且仅有一个抽象方法的接口,称为“函数式接口”

上一篇 下一篇

猜你喜欢

热点阅读