候选JEP:记录和密封类型

马克·赖因霍尔德(Mark Reinhold )本周在OpenJDK琥珀色开发者邮件列表上宣布了两个新的紧密相关的候选 JDK增强提案( JEP) ,其帖子分别为“ 新候选JEP:359:记录(预览) ”和“ 新候选JEP:360:密封类型(预览) 。” 这两个候选JEP都是“ 预览功能 ”(由JEP 12定义)。

JEP 359:记录(预览)

JEP 359 “摘要”指出:“使用记录增强Java编程语言。 记录为声明类提供了一种紧凑的语法,这些类是浅层不可变数据的透明持有者。”

JEP 359的“动机和目标”部分说明了记录如何使Java开发人员受益。 该部分首先指出“常见的抱怨是'Java太冗长'或具有太多的'仪式',并解释说”一些最严重的违规者是只充当普通“数据载体”的类。简单的集合。” 本节还指出,记录的目的不只是“减少样板”,而且“它们应易于,清晰,简明,以声明不可变的,行为良好的名义数据汇总。” 简而言之,JEP 359规定的驱动目标是“ 将数据建模为数据”

最近提出的java.lang.Record 草案规范记录的特性提供了重要的见解。 JEP 359的“描述”部分的开头段落还描述了记录:“ 记录是Java语言中的一种新型类型声明。 像枚举一样,记录是类的一种受限形式。 它声明其表示形式,并提交与该表示形式匹配的API。 记录放弃了类通常享有的自由:将API与表示分离的能力。 作为回报,记录获得了很大程度的简洁性 。” JEP 359的“描述”部分中包含大量文本。

JEP 360:密封类型(预览)

JEP 360的“摘要”部分指出:“使用密封类型增强Java编程语言。 密封类型是类或接口,它们对其他类或接口可以扩展或实现它们施加了限制。”

JEP 360的“目标”部分也很简洁,“在与类型本身相同的维护域中,启用类和接口以将允许的子类型限制为枚举的类型集。”

这是的“描述”部分JEP 360 ,其提供到具体性JEP 360 。 该部分开始,“ 密封类型是根据类型声明中指定的指导对其子类型进行限制的类型。” “说明”部分的第二段指出“密封具有两个不同的目的”,并描述了这些目的:

  1. “限制哪些类可以是密封类的子类。”
  2. “有可能在使用现场进行详尽的分析 ,例如在为密封类型的实例切换类型模式时。”

“描述”部分中介绍了密封类型的其他有趣特征。 这些对我来说很突出的是:

  • 使用(带示例) sealed修饰符和permits子句。
  • “除非使用non-sealed修饰符声明,否则密封类型的抽象子类型是隐式密封的。”
  • “除非使用non-sealed修饰符声明,否则密封类型的混凝土子类型是隐式最终的。”
  • “密封性与最终性一样,由语言编译器和JVM共同实施。 类型的密封性及其允许的子类型列表在类文件中得到了验证,并在运行时强制执行。”

此JEP中涵盖的与密封类型相关的其他有趣细节包括限制(可能发生的编译器错误),密封类型的类形式,以及增加了支持密封类型的反射方法。

结论

JEP 359 (记录预览)和JEP 360 (密封类型预览)在其文档中相互引用。 在这两个候选JEP之间的关系中,JEP 360指出:“密封的类型和记录一起构成通常被称为代数数据类型的结构 。” 记录和密封类型是Java支持模式匹配的关键部分。

翻译自: https://www.javacodegeeks.com/2019/09/candidate-jeps-records-and-sealed-types.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值