【发布时间】:2016-08-06 07:19:43
【问题描述】:
根据JLS 15.27.2,lambda 主体与周围上下文具有相同的范围,我想知道是否有特定原因导致 lambda 实现的接口中的默认方法在身体也是?此限制是否启用了一些优化,还是只是为了保持重载规则简单?
我今天正在对一些 Java 8 API 进行原型设计,当我遇到这个限制时,我感到非常失望,因为使用默认方法可以让我以一种非常优雅且非侵入性的方式实现该 API。
要求静态导入或多或少有可能实现相同的优雅,但这会导致“污染”命名空间。
有没有可能解除这个限制?
【问题讨论】:
-
一个简短的例子有助于理解你在说什么
-
相关(虽然不重复):stackoverflow.com/q/33108540/3973077
-
“lambda 主体与周围的上下文具有相同的范围”已经暗示在范围内没有虚假的
default方法。当然,这大大简化了名称解析规则。这一切都归结为“lambda 表达式不是内部类的语法糖”......另请参阅here -
相关问题其实包含了一个很好的例子。
标签: java lambda java-8 default-method