为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

拉莫斯之舞 2018-07-08 14:21:07
刚学看这个表达式,感觉这个东西有些地方是个玄学啊,没搞明白...刚发现的一个问题,有一个TestLambda2的类,还有一个TestLambda4的接口类中的方法:接口中的:参数一样,类中的是static修饰的,两个没有任何联系,继承啊实现啊这些,然后:成立了...即使我在弄一个新的接口然后参数一样,返回类型一样,然后也没有任何联系,依然可以引用,求大神给一个通俗点的教程地址...
查看完整描述

2 回答

?
MM们

TA贡献1886条经验 获得超2个赞

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

查看完整回答
反对 回复 2018-07-13
?
慕无忌1623718

TA贡献1744条经验 获得超4个赞

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


查看完整回答
反对 回复 2018-07-13
  • 2 回答
  • 0 关注
  • 86 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信