JEP 455: 模式、instanceof 和 switch 中的原始类型(预览)

主要观点:增强模式匹配,允许在所有模式上下文中使用原始类型模式,扩展instanceofswitch以处理所有原始类型,这是预览语言功能
关键信息:

  • 目标:实现统一数据探索,使instanceof与模式匹配对齐,允许在嵌套和顶级上下文中使用原始类型模式,提供消除不安全转换风险的易用构造,让switch处理任何原始类型值。
  • 非目标:不向 Java 语言添加新的转换类型。
  • 动机:消除与原始类型相关的限制,使 Java 语言更统一、更具表达力。具体包括switch模式匹配不支持原始类型模式、记录模式对原始类型支持有限、instanceof模式匹配不支持原始类型、instanceofswitch中原始类型的限制等。
    重要细节:
  • 在 Java 21 中,原始类型模式仅允许作为记录模式中的嵌套模式,现在将扩展模式匹配以支持更广泛的匹配候选类型,增强instanceofswitch构造以支持原始类型模式,进一步扩展instanceof以测试所有类型,增强switch以处理所有原始类型。
  • 转换的安全性:转换分为精确转换和非精确转换,某些转换在编译时已知是精确的,而其他转换需要运行时测试。
  • instanceof作为安全转换的前提:传统上instanceof类型测试限于引用类型,现在扩展到支持原始类型,通过精确转换来确定是否可以安全地进行转换。
  • 原始类型模式在instanceofswitch中的应用:允许在instanceofswitch中使用原始类型模式,提升了原始类型模式的适用性、无条件性和匹配性规则。
  • 穷举性:switch表达式需要是穷举的,对于原始类型模式有新的穷举性规则,同时使用支配性来确定switch中的情况是否匹配任何输入值。
  • switch中扩展的原始类型支持:允许选择器表达式为longfloatdoubleboolean及其对应的装箱类型,case常量需与选择器表达式类型匹配,浮点数字面量在case标签中的语义基于运行时的表示等价性。
阅读 11
0 条评论