Lambda表达式的学习
Lambda
函数式接口:
-
任何接口,如果只包含唯一一个抽象方法,他就是一个函数式接口。
-
函数式接口可以通过Lambda表达式来创建该接口的对象。
关于Lambda表达式,解决的就是函数式接口的需要采用大量复杂的代码,尤其见于线程的使用
首先是采用外部类:
public class Lambda {
public static void main(String[] args) {
//要实现接口首先要实例化一个外部类,然后实现
LeiAi leiAi = new LeiAi();
leiAi.like("苹果");
}
}
//定义一个外部类实现ILike接口
class LeiAi implements ILike{
结果:
![image-20211117195132848](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117195132848.png)
接着使用静态内部类:
ublic class Lambda {
static class LeiAI implements ILike{
结果:
![image-20211117195216136](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117195216136.png)
局部内部类:
public class Lambda {
public static void main(String[] args) {
//创建局部内部类实现
class LeiAI implements ILike{
结果
![image-20211117195540519](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117195540519.png)
匿名内部类
public class Lambda {
public static void main(String[] args) {
new ILike() {
结果:
![image-20211117195926630](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117195926630.png)
lambda
public class Lambda {
public static void main(String[] args) {
ILike iLike = (String food)->{
System.out.println("我喜欢吃--->"+ food);
};
iLike.like("西瓜");
}
}
interface ILike{
void like(String food);
}
结果:
![image-20211117200551628](C:\Users\Administrator\AppData\Roaming\Typora\typora-user-images\image-20211117200551628.png)
更加简化的Lambda
public class Lambda {
public static void main(String[] args) {
ILike iLike = food-> System.out.println("我喜欢吃--->"+ food);
iLike.like("榴莲");
}
}
interface ILike{
void like(String food);
}
其中参数的类型可以全部去掉,但是必须加上括号,只有一句语句才可以去除语法块中的{}
Lambda在Android中的使用十分广泛,所以还有一系列内部类的使用也都比较晦涩难懂,一步一个脚印。