Lambda表达式可以直接为接口创建对象吗

Lambda表达式可以直接为接口创建对象吗

http://img1.sycdn.imooc.com//climg/60a66c0b09d55e9619200937.jpg

课程里说Lambda的addition对象和下面new出来的addition对象是一致的;

但是,接口不是不能直接实例化的吗?也就是说MathOperation中的addition其实不是接口实例化的对象才是吧?为什么老师说这两个都是对象?这是不是说法上有点问题?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

同学你好,是一致的,但是并不是直接为接口创建对象哦

是的,接口是不可以直接实例化的,从注释的代码中可以看出,这里实例化的并不是接口,而是实现类;可以理解为,MathOperation的addition是实现类实例化对象后的引用,其实这里相当于是接口的引用指向了实现类对象;只不过在普通代码中需要创建一个类实现该接口,再创建该类对象,而使用Lambda表达式省略了这个步骤

http://img1.sycdn.imooc.com//climg/60a72ba609c78d6a08300525.jpg

祝学习愉快~
  • Ricardo慕 提问者 #1
    老师的意思是lambda表达式隐藏了接口实现类的步奏;我可不可以理解成这里其实是隐式的创建了一个实现类?
    2021-05-21 13:31:33
  • 好帮手慕阿园 回复 提问者 Ricardo慕 #2

    同学你好,可以这里理解,但是这里涉及到了底层的操作,老师也不确定底层是否创建了一个实现类,同学暂时先记住Lambda表达式的使用,等知识储备达到一定的程度再来研究底层的原理

    祝学习愉快~

    2021-05-21 16:36:38
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师