前言:前几天电脑屏幕碎了又碎,没有学习。
一.lambda表达式简介
1、lambda表达式是针对接口而言,用来简化代码而存在的。
2、lambda表达式的基本语法:()->{};
二.lambda表达式与匿名类的对比
1.假设有一个名为StringHandler的接口,里面有一个抽象方法printMessage,方法有参数。测试类里面有一个useStringHandler方法,该方法调用抽象方法。则采用匿名类书写如下:
useStringHandler(new StringHandler() {
@Override
public void printMessage(String msg) {//执行useString方法时调用,且为msg传参,此处理解为“在重写方法”
System.out.println("通过匿名类调用:你好,"+msg);
}
});
而采用lambda表达式书写为:
useStringHandler((String msg)->{
System.out.println("你好,"+msg);
});
可见,代码简洁了许多。
三.lambda的再省略
1.函数参数的类型可以省略。如果有多个参数,则要么全省略,要么都不省略(一致性);
2.如果只有一个参数,可以省略参数小括号;
3.如果函数体只有一行代码,则可以省略大括号和分号(一定要一起,即要么都省略,要么都不省略);如果为返回值,则return也可省略。
(再省真看不懂了)
上面的lambda表达式可省略为如下形式:
useStringHandler(msg->System.out.println("你好,"+msg));
//省略小括号、参数类型,大括号、分号
四.lambda表达式的注意事项
1.只有当接口中仅有一个抽象方法时(即函数式接口),才能1使用lambda表达式;
2.lambda表达式仅针对于接口,而匿名类适用范围更广:可以是接口,可以是抽象类,也可以是具体类。