lambda表达式-1、介绍和基本使用以及原理分析

目录

 

一、lambda解释

二、使用和原理说明

1、不使用lambda表达式

2、使用lambda表达式


一、lambda解释

Lambda 表达式(lambda expression)是一个匿名函数,Lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象(lambda abstraction),是一个匿名函数,即没有函数名的函数。Lambda表达式可以表示闭包(注意和数学传统意义上的不同)。

二、使用和原理说明

准备工作

public class LambdaTest {
    void printLambda(String str,Print print){
        print.printS(str);
    }
}
public interface Print {
    public void printS(String str);
}

1、不使用lambda表达式

public static void main(String[] args) {
        LambdaTest lambdaTest = new LambdaTest();
        Print print = new Print() {
            @Override
            public void printS(String str) {
                System.out.println(str);
            }
        };
        lambdaTest.printLambda("不使用lambda表达式",print);
    }

运行结果

2、使用lambda表达式

标准写法,lambda表达式会到print接口中寻找是否含有一个传入参数为String类型的方法

 LambdaTest lambdaTest = new LambdaTest();
        Print print = (String str) -> {
            System.out.println(str);
        };
        lambdaTest.printLambda("使用lambda表达式",print);
    }

简化

        LambdaTest lambdaTest = new LambdaTest();
        Print print = str -> System.out.println(str);
        lambdaTest.printLambda("使用lambda表达式",print);

最简化,lambda表达式会根据printLambda()方法里面需要的参数,找到对应的参数类型,找到传入的参数为一个的方法

public static void main(String[] args) {
        LambdaTest lambdaTest = new LambdaTest();
        lambdaTest.printLambda("使用lambda表达式",str -> System.out.println(str));
    }

我们可以验证一下这个逻辑

给Print接口添加一个打印integer类型的方法

public interface Print {
    public void printS(String str);
    public void printI(Integer str);
}

这个时候main方法中报错,也就验证了我们上面的猜想

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章