
关注Var/Val,枚举和Lambda
Amber项目是去年1月首次引入的,当时Java语言架构师Brian Goetz提议创建一个项目,以探索和孵化更小的、面向生产力的Java语言特性。沐鸣测速登录地址
作为这个项目一部分的特性的主要前提是:它们已经被作为候选JEPs接受,也被称为JDK增强提案。在这个过程中,Oracle收集增强Java开发工具包和OpenJDK的建议。经过批准的建议将继续成为Java中的实际特性
Goetz指出,这个项目不是用来思考或讨论改进Java的新想法的地方,“互联网的其余部分仍然可用”。
3月16日,Goetz将Amber项目引入了Java社区,同时也引入了之前采纳的三个Java增强建议:
扩展类型推断到局部变量的初始化声明
-增强枚举(JEP 301) -特性和能力,将使枚举更好
- Lambda剩余物(JEP 302) -提高Lambda的可用性沐鸣网址
为什么这三个项目会得到如此特别的关注?让我们找出答案。
满足项目的新功能
局部变量类型推断
大多数开发人员使用Java的一个主要问题是它太冗长。当阅读并试图理解其他开发人员在编写函数时的想法时,这可能是一件好事,但在实际编写这些函数时,这可能会变得乏味。
如果您想了解这个特性的更多信息,以及社区对它的看法,请参阅我们对新的Java本地变量类型推断语言特性的动手概览。
增强的枚举
这个特性的目标是增强Java语言中enum结构的表现力。正如提案中所述,Java枚举是一种功能强大且常用的构造。它们允许对常量进行分组,其中每个常量都是一个单例对象。当变量必须等于为其预定义的值之一时,它允许变量是一组预定义的常量。例如,每周的天数。
增强将允许枚举中的类型变量(泛型支持),这可以扩展枚举。它还将为枚举常量提供更精确的类型检查,以验证和强制枚举的约束。
支持泛型的枚举将允许我们指示具有关联类型的键集,并且我们将能够向单个项添加方法。这两个特性将协同工作,使enum常量能够携带特定于常量的类型信息以及特定于常量的状态和行为。增强枚举将允许我们用泛型类型定义枚举。可以显示此特性的一些值的一个例子是在表示数学常量时:
在这个示例中,我们可以添加对其他方法的支持,同时仍然享受每个方法的类型安全性。当underlyingObject不必是Object类型时,沐鸣开户向enum的构造函数传递不同类型的能力展示了该特性可以为表带来的优雅
增强枚举的另一个有用应用是减少在不同数据类型之间转换的样板代码。例如,jdbc类型转换为Java类型。它可以帮助增强代码自文档化的能力,并避免代码闻起来像“instanceOf”检查。
λ的剩饭剩菜
项目Lambda是在2014年随Java 8一起发布的,但总有改进的空间。这里的想法是通过增强方法上下文中函数表达式的消歧性来提高lambda表达式和方法引用的可用性。
该特性还关注于完成下划线字符的恢复,以指示未使用的lambda参数,并允许lambda参数在封闭范围中隐藏变量。
使用下划线作为未命名lambda参数符号的概念在其他语言中已经存在,我们的目标是使它也成为Java的一部分。使用非常简单,看起来是这样的: