JDK1.8 Lambda表达式的进化

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();

    }

}

猜你喜欢

转载自blog.csdn.net/qq_36844475/article/details/113173984