猿问

java的lambda表达式的方法引用问题

刚学看这个表达式,感觉这个东西有些地方是个玄学啊,没搞明白...
刚发现的一个问题,有一个TestLambda2的类,还有一个TestLambda4的接口
类中的方法:

接口中的:

https://img.mukewang.com/5b48a66d0001be3503370060.jpg

参数一样,类中的是static修饰的,两个没有任何联系,继承啊实现啊这些,然后:

https://img2.mukewang.com/5b48a6800001b84204390045.jpg

成立了...即使我在弄一个新的接口然后参数一样,返回类型一样,然后也没有任何联系,依然可以引用,求大神给一个通俗点的教程地址...


拉莫斯之舞
浏览 87回答 2
2回答

MM们

Lambda表达式的引入是java对函数式编程思想的引入。简单的来说,方法也可以作为一种变量进行赋值和传递。但是因为java本身的面向对象思想,所以以类的形式对函数式编程思想进行实现。

慕无忌1623718

Java 是面向对象的语言,所以各种语法都无法脱离 类 而存在,而看问题也要透过现象看到本质:对于 TestLambda4 lambda4 = TestLambda2::test1 这个方法引用,你可以理解为:TestLambda4 lambda4 = str -> TestLambda2.test1(str);而对于 Lambda 表达式,虽然底层实现和匿名内部类有区别,但是在语法功能上,二者是完全一致的,即可以把上面的 Lambda 理解为:TestLambda4 lambda4 = new TestLambda4() {     @Override     public String test111(String s) {                 return TestLambda2.test1(s);     }      };
随时随地看视频慕课网APP
我要回答