您的位置:网站首页 > Java工具 > 正文

Java 10 将带来升级版的 Lambda

类别:Java工具 日期:2019-5-20 2:52:45 人气: 来源:

  一个新的 JEP将用于增强 lambda 功能,提出的更改包括更好的消岐、对未使用的参数用下划线标注和外部变量的。虽然这些更改会使 Java 中的 lambda 表达式更类似于其它语言,但是初步讨论表明大家都不同程度地支持这个方案。这个 JEP 补充了一系列其他来改进 Java 语言,包括局部变量类型推断增强的枚举,所有这些改进都可能出现在 Java 10 中。

  尽管上述三个更改都与 lambda 功能有关,但它们之间是相互的,其中一些可能会被,而其他的则取决于反馈情况。因此,我们将在本文中单独解释它们。

  当在 Java 8 中添加 lambda 功能时,必须修改类型推断以支持它们。然而,过去进行的更改并没有达到预期的效果,部分原因是担心这些更改会使第一次接触 lambda 的开发者感到困惑。但是,从这一点来说,情况似乎正在改变,并且如果上下文提供了充足的信息,而编译器无法推断 lambda 的类型时,一些开发者会感到沮丧。以下例子说明了 lambda 类型推断如何工作:

  然而,对于最后一种情况来说,有足够的信息来判断 m4 的第一个重版本就是被调用的那个,尽管编译器当下并没有使用该信息。根据新,编译器可以按照以下步骤来解决歧义:

  某些情况下,我们希望得到具有多个参数的 lambda 表达式,尽管不会使用所有的参数,但这要求开发者使用性名称来表示未使用的参数。这个更改将允许使用下划线来表示未使用的参数。

  这是一个其他几种语言都有的功能,如 Scala、Ruby 或 Prolog,但是,在 Java 中这不能轻易地实现,因为直到 Java 7,下划线仍然是一个有效的标识符,它可以在代码其它地方使用。为了引入这种更改而不需要重写大量的代码,这一功能需要逐步完善:

  Java 8:当下划线用作标识符时,会发出,开发人员使用它 ; 下划线不允许作为 lambda 中的标识符(这不会导致任何向后不兼容问题,因为在 Java 8 之前的版本并没有 lambda 功能)。

  Java 9:Java 8 中的变为错误,确保将使用下划线作为标识符从 Java 代码语料库中删除。

  Java 10(或更高版本):下划线作为标识符重新引入,但仅适用于 lambda 表达式中未使用的参数。

  通过初步的讨论来看,对这一更改的意见似乎并不一致; 一些用户喜欢新的简洁性,但另一些用户喜欢使用明确的名称。在进一步的讨论中可能达成共识。

  这也许是新提出的功能中最有争议的一个。当前 lambda 参数不允许影响外部变量,意味着参数名称必须不同于当前作用域中可访问的任何变量 ; 这与其他包含作用域保持一致,比如while循环或if语句:

  如果的更改继续下去,lambda 参数将能够重复使用和隐藏现有标识符。在某些情况下,这可能有利于用户,也就是说他们不需要使用其他不太直接的名称作为他们的 lambda 参数名称(的例子通常会被重写为s2 - s2.isEmpty()),但是,就像国际知名者 Roy Van Rijn提出的那样,它也可能引入微小的错误:

  目前,上述代码是不被允许的,但根据新提案这也可能是对的。如果标记为“shadow variable”的行被删除,代码将仍然可以编译和运行,但它会做完全不同的事情。

  为了评估上述更改是否将被引入 Java 以及将以什么形式引入,他们还将进行更多的讨论。然而,毫无疑问的是,在 Java 8 中引入 lambda 只是未来 Java 语言的众多改进的第一步。梦见吃饺子

   文章来源于850游戏博贝棋牌

关键词:java重写
0
0
0
0
0
0
0
0
下一篇:没有资料

相关阅读

网友评论 ()条 查看

姓名: 验证码: 看不清楚,换一个

推荐文章更多

热门图文更多

最新文章更多

关于联系我们 - 广告服务 - 友情链接 - 网站地图 - 版权声明 - 人才招聘 - 帮助

郑重声明:本站资源来源网络 如果侵犯了你的利益请联系站长删除

CopyRight 2010-2012 技术支持 FXT All Rights Reserved