Lambda表达式:
作用:
①:避免匿名内部类定义过多。
②:可以让代码看起来更简洁。
③:去掉一堆没有意义的代码,只留下核心逻辑代码。
函数式接口(Functional Interface):lambda使用的前提。
定义:
①:任何接口只包含唯一一个抽象方法,那么它就是一个函数式接口。
②:对于函数式接口,可以通过Iambda表达式来创建该接口的对象。
public class TestLambda1 {
//2:静态内部类
static class Ridersong2 implements Song{
@Override
public void lambda() {
System.out.println("Song like lambda!2");
}
}
public static void main(String[] args) {
Song song=new Ridersong();
song.lambda();
Song song2=new Ridersong2();
song2.lambda();
//3:局部内部类
class Ridersong3 implements Song{
@Override
public void lambda() {
System.out.println("Song like lambda!3");
}
}
Song song3=new Ridersong3();
song3.lambda();
//4:匿名内部类(没有类名称,必须借助接口或者父类)
Song song4= new Song() {
@Override
public void lambda() {
System.out.println("Song like lambda!4");
}
};
song4.lambda();
//JDK8新增lambda
//5:Lambda简化(前提是函数式接口)
//()是参数值,参数的基本类型也可以省略
Song song5=()->{
System.out.println("Song like lambda!5");
};
song5.lambda();
//再简化(只有一条执行语句时,多行时必须用大括号)
Song song6=()-> System.out.println("Song like lambda!6");
song6.lambda();
}
}
//定义函数式接口
interface Song{
void lambda();
}
//1:实现类
class Ridersong implements Song{
@Override
public void lambda() {
System.out.println("Song like lambda1!");
}
}