JavaSE 10 新特性

2018-07-10  本文已影响0人  javaBoy_hw

简介

新特性

局部变量类型推断

强类型编程语言有很多优点,包括在编译时发现类型错误,但是它们也引入了大量的样板代码,特别是在定义局部变量时。例如,当我们实例化一个对象时,我们被迫在赋值的左侧提供显式类型,并在赋值的右边提供实现类型,如下面的片段所示:

List list = new ArrayList();

许多最流行的强类型的编程语言,比如C++, C#以及Go,在定义过程中,提供一种局部变量类型推断的功能(例如C++提供了auto 关键字,C#提供var关键字)。但是,Java仍缺乏这样的功能,它要求开发人员显式声明变量的预期清单类型。
为了解决这个问题,Java开发工具包(JDK)改进建议(JEP)286提出了一个上下文敏感的关键字var,允许局部变量被以下方式初始化:

var list = new ArrayList();

它的使用有下面的规则定义:
代码使用var作为一个变量、方法或包名称时将不受影响;而使用var作为类或接口名称的代码将受到影响。
同样,类型推断将受到以下方式的约束:
推断类型将被限制在局部变量的初始化,增强的for循环索引,以及传统的for循环中声明;它(将)不用于方法形式、构造函数形式、方法返回类型、字段、捕获形式,或任何其他类型的变量声明。

整合的JDK库

目前,有8个不同的Mercurial存储库用于存储包含JDK的大量源代码:(1)root,(2)corba,(3)hotspot,(4)jaxp,(5)jaxws,(6)JDK,(7)langtools,(8)nashorn。
为了解决在JDK的两个不同部分,单个错误修复程序不能被原子跟踪。JEP 296建议将所有现有存储库合并到一个Mercurial存储库中。

上一篇 下一篇

猜你喜欢

热点阅读