在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java/ java的lambda表達(dá)式的方法引用問題

java的lambda表達(dá)式的方法引用問題

剛學(xué)看這個(gè)表達(dá)式,感覺這個(gè)東西有些地方是個(gè)玄學(xué)啊,沒搞明白...
剛發(fā)現(xiàn)的一個(gè)問題,有一個(gè)TestLambda2的類,還有一個(gè)TestLambda4的接口
類中的方法:
clipboard.png

接口中的:

clipboard.png

參數(shù)一樣,類中的是static修飾的,兩個(gè)沒有任何聯(lián)系,繼承啊實(shí)現(xiàn)啊這些,然后:

clipboard.png

成立了...即使我在弄一個(gè)新的接口然后參數(shù)一樣,返回類型一樣,然后也沒有任何聯(lián)系,依然可以引用,求大神給一個(gè)通俗點(diǎn)的教程地址...

回答
編輯回答
澐染

Java 是面向?qū)ο蟮恼Z言,所以各種語法都無法脫離 而存在,而看問題也要透過現(xiàn)象看到本質(zhì):

對(duì)于 TestLambda4 lambda4 = TestLambda2::test1 這個(gè)方法引用,你可以理解為:

TestLambda4 lambda4 = str -> TestLambda2.test1(str);

而對(duì)于 Lambda 表達(dá)式,雖然底層實(shí)現(xiàn)和匿名內(nèi)部類有區(qū)別,但是在語法功能上,二者是完全一致的,即可以把上面的 Lambda 理解為:

TestLambda4 lambda4 = new TestLambda4() {

    @Override
    public String test111(String s) {
        return TestLambda2.test1(s);
    }
    
};
2017年3月30日 14:28
編輯回答
互擼娃

Lambda表達(dá)式的引入是java對(duì)函數(shù)式編程思想的引入。簡(jiǎn)單的來說,方法也可以作為一種變量進(jìn)行賦值和傳遞。但是因?yàn)閖ava本身的面向?qū)ο笏枷?,所以以類的形式?duì)函數(shù)式編程思想進(jìn)行實(shí)現(xiàn)。
推薦閱讀《java8 實(shí)戰(zhàn)》來深入理解一下。

2018年8月16日 09:27