目录
前言
Lambda表达式简化程序代码。
函数式编程思想概述
函数编程思想
函数式思想则尽量忽略面向对象的复杂语法——强调做什么,而不是以什么形式做,也就是直接传入一段代码,不需要创建对象
Lambda表达式的格式
Lambda表达式的标准格式为:
(参数类型 参数名称) -> { 代码语句 }
格式说明
- 小括号内的语法与传统方法参数列表一致:无参数则留空;多个参数则用逗号分隔。
- ->是新引入的语法格式,代表指向动作。
- 大括号内的语法与传统方法体要求基本一致。
格式解释:
- 小括号中书写的内容和接口中的抽象方法的参数列表一致(接口只有一个抽象方法)
- 大括号中书写的内容和实现接口中的抽象方法的方法体一致
- 箭头就是固定的
代码演示
Thread t1 = new Thread(new Runnable() {
@Override
public void run() {
System.out.println("线程需要执行的任务代码1...");
}
});
t1.start();
// 函数式编程思想: Lambda表达式
Thread t2 = new Thread(()->{ System.out.println("线程需要执行的任务代码2...");});
t2.start();
Lambda的前提条件
- 使用Lambda必须具有接口,且要求接口中的抽象方法有且仅有一个。(别的方法没有影响)
- 使用Lambda必须具有上下文推断。
- 如果一个接口中只有一个抽象方法,那么这个接口叫做是函数式接口。
@FunctionalInterface这个注解 就表示这个接口是一个函数式接口
Lambda的表现形式
- 变量形式:变量的类型为函数式接口类型,那么可以赋值一个Lambda表达式
- 参数形式:方法的形参类型为函数式接口类型,那么就可以传入一个Lambda表达式
- 返回值形式:方法的返回值类型为函数式接口类型,那么就可以返回一个Lamdba表达式
Lambda表达式省略格式
省略规则
在Lambda标准格式的基础上,使用省略写法的规则为:
- 小括号内参数的类型可以省略;
- 如果小括号内有且仅有一个参数,则小括号可以省略;
- 如果大括号内有且仅有一条语句,则无论是否有返回值,都可以省略大括号、return关键字及语句分号。