java 开发:md5
一个新的JDK增强建议(JEP)在Java社区中风起云涌:JEP286。该建议建议在Java的未来版本中引入局部变量类型推断,以简化Java应用程序的编写。
在下面的文章中,我们将解释它的含义以及它将如何影响您的代码。
新帖:Java社区调查结果:74%的开发人员希望减少详细程度https://t.co/TtxVBiqFAj pic.twitter.com/TEs0VtFnpD
— Takipi(@takipid) 2016年4月13日
提案
新的语言功能建议在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个开发人员答复,结果我们基本上是肯定的:
该调查的第二部分着眼于未来的语法,根据其他语言(例如C#,Scala,Swift,C ++或使用let)的类似用法,建议了5种选择。 大多数用户选择var / val选项:
即使大多数用户赞成此新选项,但阅读注释部分仍会显示开发人员赞成此更改,要求Oracle“与时俱进”,指出此更改应仅适用于val,甚至要求更多更改,例如作为多行字符串。
我的生日只有几个星期,但这是有史以来最好的礼物之一! https://t.co/QVtXwUPwEG
原声带: https : //t.co/dIpLKLFFEE— Erik Meijer(@headinthebox) 2016年3月10日
反对该建议的开发人员声称,对于那些刚开始使用Java的人来说可能会很困难,或者指出现有语法是“冗长和易读性的正确组合”,而“ diamond运算符是一个不错的选择。行动”,与目前的提案不同。
不要责怪语言功能使开发人员编写糟糕的代码。 责怪卑鄙的开发者! JEP286对于Java #var #val来说是一件很棒的事
— Simon Maple(@sjmaple) 2016年3月13日
这种变化来自何处?
关于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的类型推断吗? @raoulUK和我为JEP 286设置了二进制文件,因此您可以尝试使用https://t.co/0YqnoguqTe
—理查德·沃伯顿(RichardWarburto) 2016年3月13日
最后的想法
这项新提议正在Java社区中引起轰动,引起了很多关注。 您现在可以测试新功能,这将帮助开发人员认识到Java的未来可能掌握的事实。
重要的是要记住,这是一个较早的建议,目前还不清楚Oracle是否会实施它。 因此,我们鼓励您参与将来的调查,并积极参与本JEP和其他将来与Java相关的功能。
翻译自: https://www.javacodegeeks.com/2016/04/java-community-survey-results-74-developers-want-less-verbosity.html
java 开发:md5