马克·赖因霍尔德(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

候选JEP:记录和密封类型相关推荐

  1. nginx不记录指定文件类型的日志

    不记录指定文件类型的日志 server{     listen 80;     server_name www.test1.com www.aaa1.com www.bbb1.com;     if ...

  2. canal 记录 数据变更类型 QUERY ROWDATA INSERT xxx XXXXX

    canal 记录 数据变更类型 QUERY ROWDATA INSERT xxx XXXXX 10:40:11.355 [Thread-0] INFO  org.canal.CanalClient - ...

  3. 新JEP将简化Java类型变异

    新的JEP Candidate旨在简化处理Java中复杂的类型变异的概念.这个新的JEP Candidate可能会在Java 10中推出,提供了在定义的泛型类型中指定目标对象默认变异的方法,而不是在泛 ...

  4. java jep_Java 10 – JEP 286:局部变量类型推断

    java jep Java 10即将发布,RC Build可在此处获得 . 可在此处找到此发行版的目标功能. 在针对Java 10的所有JEP中,开发人员社区中最有趣且最受关注的是286:Local- ...

  5. Java 10 – JEP 286:局部变量类型推断

    Java 10即将发布,RC Build可在此处获得 . 可在此处找到此发行版的目标功能. 在针对Java 10的所有JEP中,开发人员社区中最有趣且最受关注的是286:Local-Variable ...

  6. nginx配置不记录指定文件类型日志

    1.编辑主配置文件 vim /usr/local/nginx/conf/nginx.conf 2.将log_format combined_realip改为log_format river 备注:日志 ...

  7. Apache 不记录指定文件类型的日志——LAMP环境搭建

    网站访问量比较大的时候,我们可以对一些不必要的类型日志可以不记录到日志中,这样能够减少日志的量.例如图片.js.css等静态对象. 打开虚拟主机的配置文件 vim /usr/local/apache2 ...

  8. 什么是document对象?如何获取文档对象上的元素?_javascript自学记录:Document类型...

    10.1.2 Document类型 Document类型表示文档,document对象是HTMLDocument的一个实例,document是window对象的一个属性: Document节点的特征: ...

  9. php如何记录访问请求类型,检测PHP中的请求类型(GET、POST、PUT或DELETE)

    慕容森 检测HTTP方法或称为REQUEST METHOD可以使用以下代码片段完成.$method = $_SERVER['REQUEST_METHOD']if ($method == 'POST') ...

最新文章

  1. python参数是什么_最全Python快速入门教程,满满都是干货
  2. python filecmp
  3. 【Dairy】2016.10.30 BirthdayParty
  4. (转)人工智能无处不在,这次是有公司用它来炒股
  5. spring 事务传播机制和隔离级别
  6. MySQL Shell 教程
  7. linux下gmt4绘制站点分布图,GMT复杂图制作教程———让作图简单的飞起来
  8. movielens1M数据处理
  9. 16.微信登入与授权
  10. GV7704的中文资料
  11. [Azure] 取消 或 删除Azure云订阅服务
  12. 电子科大杨宁TCPIP协议原理(总结)
  13. 帷幕的帷是什么意思_古时纺织什么样子?穿越时空看古代纺织发展
  14. 新公司入职 从零开始搭建环境
  15. python+turtle制作一个生日蛋糕
  16. asp毕业设计——基于asp+access的网上选题系统设计与实现(毕业论文+程序源码)——网上选题系统
  17. 开心测试卷答案软件六下外研版,外研版英语六年级小升初测试卷含答案
  18. ios 密码大小写数字 符号_iOS 用户密码 数字字母特殊符号设置 判断
  19. 开会时领导让提建议应该要怎么回答?
  20. c语言黑皮书pdf,黑皮书

热门文章

  1. AtCoder Grand Contest 021 D - Reversed LCS(区间dp)
  2. 数学知识总结——矩阵
  3. 二次重建基本完成辣!
  4. Simple-Faster-RCNN源码学习笔记
  5. mybatis源码阅读(一):SqlSession和SqlSessionFactory
  6. Java中枚举的线程安全性及序列化问题
  7. 头条面试题:请谈谈Redis 9种数据结构以及它们的内部编码实现
  8. LinkedList 的实现原理浅析
  9. 大型网站架构利器-CDN技术
  10. #面试!,一定要注意,避免踩这些雷!!