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方法中報錯,也就驗證了我們上面的猜想

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