java 开发:md5

一个新的JDK增强建议(JEP)在Java社区中风起云涌:JEP286。该建议建议在Java的未来版本中引入局部变量类型推断,以简化Java应用程序的编写。

在下面的文章中,我们将解释它的含义以及它将如何影响您的代码。

提案

新的语言功能建议在Java中添加一些语法糖—简化它并改善开发人员的体验。 新语法将减少与编写Java相关的仪式,同时保持对静态类型安全性的承诺。

换句话说,您无需指定关联的类型就可以声明变量。 Oracle声明该新功能将允许例如以下声明:

var list = new ArrayList<String>();
val stream = getStream();

那将替换当前的语法:

List<String> list = new ArrayList<String>();
final Stream<String> stream = getStream();

如您所见,Local Variable Type Inference将允许使用var关键字,而不是指定变量的类型。

众所周知,Java有点冗长,在阅读和理解您或其他开发人员编写函数时的想法时,这非常有用。 对于那些一直认为这有点乏味的人来说,该提案标志着重大的改变。

该建议与Java 9不相关,因为Java 9正在制定中,并且也会改变您的编码方式

去JEP还是不去JEP?

几周前,Oracle Java语言架构师Brian Goetz 发布了这项新建议的调查结果 。 主要问题是:“您总体上对拟议的局部变量类型推断功能有何看法?”。 2,453个开发人员答复,结果我们基本上是肯定的:

图像-e1460556767492

您如何看待提议的局部变量类型推断功能?

该调查的第二部分着眼于未来的语法,根据其他语言(例如C#,Scala,Swift,C ++或使用let)的类似用法,建议了5种选择。 大多数用户选择var / val选项:

图片1

可能的语法选项

即使大多数用户赞成此新选项,但阅读注释部分仍会显示开发人员赞成此更改,要求Oracle“与时俱进”,指出此更改应仅适用于val,甚至要求更多更改,例如作为多行字符串。

反对该建议的开发人员声称,对于那些刚开始使用Java的人来说可能会很困难,或者指出现有语法是“冗长和易读性的正确组合”,而“ diamond运算符是一个不错的选择。行动”,与目前的提案不同。

这种变化来自何处?

关于Java的最常见的抱怨之一是编写Java所需的样板代码数量。 几行Java代码可以用其他语言(例如C ++,C#,Scala和Go)用一行编写。

尽管类型推断不是Java中的新概念,但它是局部变量的新概念。

它是在Java 7中(作为Project Coin的一部分)通过菱形运算符(<>)引入的,该运算符允许在没有类型绑定ArrayList <>的情况下初始化列表,而在Java 8中是使用Lambda Formals引入的。 例如,使用菱形运算符可以编写以下代码:

List<String> list = new LinkedList<String>();

当然, 在JEP 286摘要页面上,您可以从Oracle找到以下添加新功能的理由:

“ Java几乎是唯一不包含局部变量类型推断的流行的静态类型语言。 在这一点上,这不再是一个有争议的功能”

这将如何影响您的代码?

Oracle知道社区可能需要一些时间来适应和接受这一新建议。 虽然尚不清楚JEP 286是否以及何时在将来的Java版本中成为现实,但这足以使社区中的一些开发人员大声疾呼。

如果您是这些开发人员之一,那么您将很高兴得知此处理方法仅限于:

  • 带有初始化器的局部变量
  • 增强的for循环中的索引
  • 在传统的for循环中声明的本地人

Oracle 声明它将不适用于:

  • 方法参数
  • 构造函数参数
  • 方法返回类型
  • 领域
  • 捕获形式(或任何其他类型的变量声明)

由于Java承诺支持Java的早期版本,因此我们可以假定它不会破坏向后兼容性。

在家尝试一下

Takipi的我们总是喜欢在新产品上市之前尝试它们,而JEP 286正是这样。 如果您对JEP 286没意见,可以立即自己检查一下。

作为采用OpenJDK计划的一部分,Richard Warburton和Raoul-Gabriel Urma公开发布了具有JEP 286支持的Open JDK的非正式版本 。 这样,您就可以尝试这些新功能,了解JEP 286的全部内容,并在实际操作中体会到它。

最后的想法

这项新提议正在Java社区中引起轰动,引起了很多关注。 您现在可以测试新功能,这将帮助开发人员认识到Java的未来可能掌握的事实。

重要的是要记住,这是一个较早的建议,目前还不清楚Oracle是否会实施它。 因此,我们鼓励您参与将来的调查,并积极参与本JEP和其他将来与Java相关的功能。

翻译自: https://www.javacodegeeks.com/2016/04/java-community-survey-results-74-developers-want-less-verbosity.html

java 开发:md5

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐