java 开发:md5_Java社区调查结果:74%的开发人员希望减少详细程度

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/336157.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python获取当前目录_又有几个Python小技巧分享

今天这篇文章为大家带来几个Python使用的小技巧&#xff1a;快速生成依赖文件文件路径处理通过set将对象去重单元测试unitest捕获异常快速生成依赖文件Python通过requirements.txt来管理项目所依赖的库&#xff0c;通过pip install -r requirements.txt命令可以直接安装项目所需…

python敏感字替换_python用类实现文章敏感词的过滤方法示例

过滤一遍并将敏感词替换之后剩余字符串中新组成了敏感词语,这种情况就要用递归来解决&#xff0c;直到过滤替换之后的结果和过滤之前一样时才算结束 第一步:建立一个敏感词库(.txt文本)第二步:编写代码在文章中过滤敏感词(递归实现) # -*- coding: utf-8 -*- # author 代序春秋…

2018年冷链百强_在分析了47,251个依赖关系之后,2016年Java图书馆百强

2018年冷链百强谁在上面&#xff0c;谁在后面&#xff1f; 我们分析了Github上的47,251个依赖关系&#xff0c;并抽取了前100个Java库 对于长周末而言&#xff0c;我们最喜欢的消遣是浏览Github并搜索流行的Java库。 我们决定与您分享乐趣和信息。 我们分析了Github上前3,862…

计算机键盘标注,电脑键盘上怎么打√和×

用电脑键盘上打出√和两个符号的方法1、在输入法开启状态下&#xff0c;鼠标右键点击输入法状态栏上面的“软键盘图标”&#xff0c;然后选择“数学符号”(直接右击打不开就先左击再右击)。2、在数学符号的软键盘面板上直接用鼠标点击“√和”就好(光标要定位在需要输入的地方)…

web服务优化与健壮性改进_创建健壮的微服务架构所涉及的组件

web服务优化与健壮性改进在本文中&#xff0c;我们将简要学习构建强大的微服务应用程序所需的各种软件组件。 在简要了解每个架构组件之前&#xff0c;我们将陈述设计微服务架构时出现的一般查询。 1.微服务架构组件 每当我们创建微服务应用程序时&#xff0c;我们都会想到以下…

owin 怎么部署在云中_使用Boxfuse轻松在云中运行Spring Boot应用程序

owin 怎么部署在云中几天前&#xff0c;我开始构建一个将使用REST API检索和存储数据的iOS应用。 该REST API将是我也必须构建的服务器应用程序。 由于我熟悉Java和Spring &#xff0c;因此决定使用Spring Boot作为框架。 为了能够在我的iPhone上使用它&#xff0c;如果我可以在…

用python画时序图源代码_使用python实现画AR模型时序图

背景&#xff1a; 用python画AR模型的时序图。 结果&#xff1a;代码&#xff1a; import numpy as np import matplotlib.pyplot as plt """ AR(1)的时序图&#xff1a;x[t]a*x[t-1]e """ num 2000 e np.random.rand(num) x np.empty(num) &…

python模块使用_一文让你学会所有的python模块使用

部分高等技能:为了削减一个编译模块的大年夜小&#xff0c;你可以在 Python 敕令行中应用 -O 或者 -OO。-O 参数删除了断言语句&#xff0c;-OO 参数删除了断言语句和 __doc__ 字符串。 因为某些法度榜样依附于这些变量的可用性&#xff0c;你应当只在肯定无误的场合应用这一选…

rest web服务_在WildFly的REST Web服务中与Jackson的双向关系

rest web服务这是使用Jackson的REST Web服务中Java实体之间的双向关系的示例。 假设我们在两个实体Parent和Child之间存在双向关系。 使用MySQL工作台为这两个表生成SQL模式文件。 DROP SCHEMA IF EXISTS bidirectional_schema ; CREATE SCHEMA IF NOT EXISTS bidirectional…

【开源项目】基于Directx屏幕录制

#include<d3d9.h> #include<iostream> #pragma comment(lib,"d3d9.lib") using namespace std; //截取全屏 void CaptureScreen(void *data) {//1 创建directx3d对象static IDirect3D9 *d3d nullptr;if (!d3d){d3d Direct3DCreate9(D3D_SDK_VERSION);…

git 修改分支名字_基础Git操作与GitHub协作吐血整理,收好!| 原力计划

作者 | 光子俊来源 | CSDN博客出品 | CSDN(ID:CSDNnews)Git介绍Git是目前世界上最先进的分布式版本控制系统&#xff0c;可以为我们管理项目、构建工程、多人协作提供便利&#xff0c;作为一个爱技术的你可以是必须要掌握的呀&#xff01;&#xff01;&#xff01;Git安装(inst…

Win7system登录打开计算机,Windows7系统system文件丢失导致开机黑屏如何解决

最近有windows7系统用户在开机的时候遇到了黑屏的问题&#xff0c;却提示“因以下文件的损坏或丢失&#xff0c;Windows无法启动windows/system32/config/system”的错误&#xff0c;导致无法开机&#xff0c;针对Windows7系统system文件丢失导致开机黑屏问题&#xff0c;本文就…

javafx阴影_JavaFX技巧来节省内存! 属性和可观察对象的阴影场

javafx阴影在 JavaFX的世界中&#xff0c; Properties API允许UI开发人员将值绑定到UI控件。 这种功能出奇的简单&#xff0c;但是当对象模型经常使用属性时&#xff0c;应用程序可能会很快耗尽内存。 我通常会编写两个单独的对象&#xff0c;例如pojo类和表示模型对象。 此技术…

yum install -y 是什么意思_为什么你应该在docker 中使用gosu?

为什么要使用gosu&#xff1f;Docker容器中运行的进程&#xff0c;如果以root身份运行话会有安全隐患&#xff0c;该进程拥有容器内的全部权限&#xff0c;更可怕的是如果有数据卷映射到宿主机&#xff0c;那么通过该容器就能操作宿主机的文件夹了&#xff0c;一旦该容器的进程…

openshift_Openshift源中的高可用性Drools无状态服务

openshift嗨&#xff0c;大家好&#xff01; 在这篇博客文章中&#xff0c;我想举一个简单的示例&#xff0c;展示使用Openshift 3&#xff08;Docker和Kubernetes&#xff09;扩展我们的Drools Stateless服务有多么容易。 我将展示如何通过按需提供新实例来扩展我们的服务&…

ibm服务器芯片架构,IBM x366 服务器技术详解

背景资料IBM eServer x366 提供了突破性的 4 路性能&#xff0c;采用机架优化的 3U服务器设计&#xff0c;结合了源自大型机灵感的 eServer X3技术的高可用性&#xff0c;具有最新 64 位Intel Xeon MP 处理器带来的 64位性能&#xff0c;可创建面向商业企业应用程序、虚拟化及 …

python antlr_使用ANTLR在5分钟内用Java解析任何语言:例如Python

python antlr我喜欢出于多种目的处理代码&#xff0c;例如静态分析或自动重构。 对我来说&#xff0c;有趣的部分是推理从抽象语法树&#xff08;AST&#xff09;构建的模型。 为此&#xff0c;您需要一种从源文件中获取AST的方法。 可以使用ANTLR轻松完成此操作&#xff0c;并…

rostcm6情感分析案例分析_卷积情感分析

这是一个面向小白(比如&#xff0c;本人)的关于情感分析的系列教程 [1]。老鸽子整理了“4 - Convolutional Sentiment Analysis.ipynb”中的内容。本文任务&#xff1a;使用卷积神经网络(CNN)来实现句子分类。简介CNN用于分析图像&#xff0c;包含一个或多个卷积层&#xff0c;…

java jigsaw_60秒内使用Java 9的Project Jigsaw的JavaFX HelloWorld

java jigsaw到目前为止&#xff0c;您可能已经听说过Java 9的新模块系统&#xff0c;即项目Jigsaw。 如果您不了解Java 9的新模块系统&#xff0c;则应该访问Mark Reinhold的论文“模块系统的状态” 。 另外&#xff0c;您应该在nipafx上查看 Nicolai Parlog的优秀博客&#xf…

opencv python 多帧降噪算法_OpenCV-Python中用于视频跟踪的Meanshift和Camshift算法介绍...

学习目标在本章中&#xff0c;我们将学习用于跟踪视频中对象的Meanshift和Camshift算法。MeanshiftMeanshift背后的直觉很简单&#xff0c;假设你有点的集合。(它可以是像素分布&#xff0c;例如直方图反投影)。你会得到一个小窗口(可能是一个圆形)&#xff0c;并且必须将该窗口…