小伙伴们大家好耶!北京时间的20:30分,居家办公的第21天,我来给大家科普一下Lambda表达式用来帮助大家和打发时间。
在学这个之前我们需要知道学这个能干嘛,有什么用,用处大不大......其实说用处的话不用lambda也完全也没什么影响,lambda主要就是为了让我们的代码看起来好看,有以下几点用处:
1,避免匿名内部类定义过多
2,可以让你的代码看起来很简洁
3,去掉了一堆没有意义的代码,只留下核心的逻辑。
如果只是口头叙述我很难做到让大家深刻理解,接下来我用代码来让大家更清晰的看清楚不用lambda表达式和用了后的鲜明对比,在展示代码前大家还要知道一个前提那就是:
理解FunctionalInterface(函数式接口)是学习Java8 lambda表达式的关键所在。
函数式接口的定义:
任何接口,如果只包含唯一一个抽象方法,那么它就是一个函数式接口。
接下来请大家看代码,我将会让代码量一次又一次的缩减来体现lambda的优秀之处:
首先我们定义一个函数式接口:
interface lambdahappy{
void lambda();
}
接下来就是他的实现类,我们在里面输出一句话:
class happy implements lambdahappy{
@Override
public void lambda() {
System.out.println("meet lambda so Happy!");
}
}
然后我们用我们最常见的方法来调用这个类new对象:
public static void main(String[] args) {
lambdahappy happy = new happy();
happy.lambda();
}
控制台成功打印出这句话,这是最常见的方法,我们现在使用静态内部类来进行调用,同样输出一句话:
static class happy2 implements lambdahappy{
@Override
public void lambda() {
System.out.println("meet lambda so Happy2!");
}
}
成功打印,接下来我们使用局部内部类,局部内部类说白了就是换个位置,将这个方法放进main方法中即可,同样输出一句话:
class happy3 implements lambdahappy{
@Override
public void lambda() {
System.out.println("meet lambda so Happy3!");
}
}
接下来呢,我们使用匿名内部类,匿名内部类就是没有类的名称,必须借助接口或者父类:
lambdahappy =new happy(){
@Override
public void lambda() {
System.out.println("meet lambda so Happy4!");
}
};
输出成功,接下来我们用lambda来试一下:
lambdahappy =() ->{
System.out.println("meet lambda so Happy5!");
};
你会发现lambda表达式省去了实例化对象和调方法这些步骤只需要简单一步即可完成,对比上面的输出方式,是不是lambda要看起来更简洁一点呢,接下来再给大家做个演示,如果接口中有参数该怎么简化呢,包括具体可以简化到那种程度呢,请看接下来的代码展示:
首先我们先来一个函数式接口:
interface cool{
void cool(String a);
}
public class kambdaTest2 {
public static void main(String[] args) {
// 1.lambda表示简化
cool cool = (String a)->{
System.out.println("meet lambda so cool!"+a);
};
//简化去掉参数类型
cool=(a)->{
System.out.println("meet lambda so cool!"+a);
};
//简化去掉括号
cool=a->{
System.out.println("meet lambda so cool!"+a);
};
//简化去掉大括号
cool=a->System.out.println("meet lambda so cool!"+a);
cool.cool("jarry");
}
}
大家看出规律了吗?通过上面的几步简化过程我们只用一句话就可以进行输出调用,但有几点需要注意的,我给大家总结下:
1.前提是接口为函数式接口(接口中只有一个方法)
2.lambda表达式只能有一行代码的情况下才能简化为一行,如果有多行那么就用代码块去包裹
3.多个参数也可以去掉多个参数类型,要去掉都去掉,必须加括号.
最后附上一张刚拍的夜景我给他起名叫做‘好久没看到过星星’ 希望以上内容能够帮助到大家,祝大家平安健康,热爱生活,热爱代码!