栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么我们不能在lambda表达式中使用默认方法?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么我们不能在lambda表达式中使用默认方法?

这或多或少是范围的问题。从JLS

与出现在匿名类声明中的代码不同,在lambda正文中出现的名称和

this
and
super
关键字的含义以及引用声明的可访问性与周围上下文相同(除了lambda参数引入新名称)。

在您尝试的示例中

Formula formula = (a) -> sqrt( a * 100);

范围不包含名称声明

sqrt

JLS也暗示了这一点

实际上,lambda表达式需要谈论自己 (以递归方式调用其自身或调用其其他方法) 是不寻常的
,而使用名称来引用封闭类中的东西则更为常见。否则会被阴影(

this
toString()
)遮盖。
如果有必要让lambda表达式引用自身(如via
this
),则应改用方法引用或匿名内部类。

我认为它可能已经实施。他们选择不允许。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/463914.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号