lambda表达式实现的充要条件是存在一个函数式接口
什么是函数式接口
只有一个抽象方法的接口。
代码简化过程
实现类实现接口方法:
1、创建接口实现类,重写接口方法
2、在main方法创建接口对象(多态向上造型),调用方法;
静态内部类
1、在类里面创建静态类实现,重写接口方法
2、在main方法创建接口对象(多态向上造型),调用方法;
局部内部类
1、在方法里面创建类实现,重写接口方法
2、在main方法创建接口对象(多态向上造型),调用方法;
匿名内部类
1、直接new接口对象
2、在方法体内写方法
lambda表达式
1、直接简化匿名内部类为()->{方法体}
方法体只有一行代码时{}可省略:()->方法体
带参数时:a->{方法体1,方法体2}
多个参数:(a,b)->{方法体1,方法体2}
package lambda;
//1.定义函数式接口
interface Love{
void Mlove();
}
//2.实现类实现接口
class Mlove implements Love{
@Override
public void Mlove() {
System.out.println("I want to make love with you");
}
}
public class LambdaTest {
//3.静态内部类
static class Mlove2 implements Love{
@Override
public void Mlove() {
System.out.println("I want to make love with you2");
}
}
public static void main(String[] args) {
//4.局部内部类
class Mlove3 implements Love{
@Override
public void Mlove() {
System.out.println("I want to make love with you3");
}
}
Love love = new Mlove();
love.Mlove();
love = new Mlove2();
love.Mlove();
love = new Mlove3();
love.Mlove();
//5.匿名内部类,没有类名称,必须借助接口或者父类
love = new Love() {
@Override
public void Mlove() {
System.out.println("I want to make love with you4");
}
};
love.Mlove();
//6.lambda表达式简化
love = ()->System.out.println("I want to make love with you5");
love.Mlove();
}
}