目录
4、如果方法体中唯一的语句是return语句,那省略大括号的同时return也要省略
一、Lambda表达式介绍
java8的一个大亮点就是引入Lambda表达式,使用它设计的代码会更加简洁,通过Lambda表达式,可以代替我们以前经常写的匿名内部类来实现接口。Lambda表达式本质是一个匿名函数。
二、Lambda表达式详解
①Lambda表达式组成
首先由三部分组成,一个(),一个->,一个{}, ()里面是所要存放的参数,{}里面是我们要实现的具体内容。
②Lambda表达式简单实现
首先我们可以试一下,首先创建一个类Program,写一个main方法,写一个接口类
咱们先来看一下输出的结果:
可以看到,输出的结果为3,这就是最简单的一个Lambda表达式。
③Lambda表达式语法
我们看一下下面这个Lambda表达式:
(int a,int b) ->{return a+b;}
这个本质上是一个函数
那么我们看一下一般的函数:
int add(int a,int b){
return a+b;
}
有返回值,方法名,参数列表,方法体(花括号里面的就是方法体)
所以我们可以看到,Lambda表达式函数的话,只有参数列表和方法体,没有返回值和方法名,所以称为匿名函数。( 参数列表 )->{ 方法体 }
④多种情况实现Lambda表达式(根据上面所建的类)
1、无参无返回值
所得结果:
2、一个参数无返回值
所得结果:
3、两个参数无返回值
所得结果:
4、无参数有返回值
所得结果:
5、一个参数有返回值
所得结果:
6、两个参数多返回值
⑤Lambda表达式精简语法
1、参数类型可以省略 
比如说这里的定义int a, int b
可以直接写成这样
2、假如只有一个参数,()括号可以省略
像这个只有一个参数
可以直接将小括号省略掉
3、如果方法体只有一条语句,{}可以省略
像这个只有一条语句
可以直接将{}省略
4、如果方法体中唯一的语句是return语句,那省略大括号的同时return也要省略
这样就可以了
⑥Lambda方法引用:
有的时候多个Lambda表达式实现的函数是一样的话,我们可以封装成通用方法,以便于维护;这个时候可以用方法引用实现
语法是: 对象::方法 假如是static方法,可以直接 类名::方法
咱们只保留一个作为实例:
我们看到业务操作就是a-2
我们来看结果:
但是又有个代码块,又有一个实现
这样的话,我们可以封装成一个方法
然后通过我们的类
创建一个对象
我们按照上面的格式书写:
可以看到结果还是 1和3
如果是静态的
那么可以直接 类名::方法
答案仍然是1和3
⑦构造方法引用
如果函数式接口的实现恰好可以通过调用一个类的构造方法来实现
那么就可以使用构造方法引用
语法:类名::new
首先我们定义一个Dog实例:
再定义两个接口:
调用无参构造方法:可以直接这样书写
这是有参的