主要观点:增强模式匹配,允许在所有模式上下文中使用原始类型模式,扩展instanceof
和switch
以处理所有原始类型,这是预览语言功能。
关键信息:
- 目标:实现统一数据探索,使
instanceof
与模式匹配对齐,允许在嵌套和顶级上下文中使用原始类型模式,提供消除不安全转换风险的易用构造,让switch
处理任何原始类型值。 - 非目标:不向 Java 语言添加新的转换类型。
- 动机:消除与原始类型相关的限制,使 Java 语言更统一、更具表达力。具体包括
switch
模式匹配不支持原始类型模式、记录模式对原始类型支持有限、instanceof
模式匹配不支持原始类型、instanceof
和switch
中原始类型的限制等。
重要细节: - 在 Java 21 中,原始类型模式仅允许作为记录模式中的嵌套模式,现在将扩展模式匹配以支持更广泛的匹配候选类型,增强
instanceof
和switch
构造以支持原始类型模式,进一步扩展instanceof
以测试所有类型,增强switch
以处理所有原始类型。 - 转换的安全性:转换分为精确转换和非精确转换,某些转换在编译时已知是精确的,而其他转换需要运行时测试。
instanceof
作为安全转换的前提:传统上instanceof
类型测试限于引用类型,现在扩展到支持原始类型,通过精确转换来确定是否可以安全地进行转换。- 原始类型模式在
instanceof
和switch
中的应用:允许在instanceof
和switch
中使用原始类型模式,提升了原始类型模式的适用性、无条件性和匹配性规则。 - 穷举性:
switch
表达式需要是穷举的,对于原始类型模式有新的穷举性规则,同时使用支配性来确定switch
中的情况是否匹配任何输入值。 switch
中扩展的原始类型支持:允许选择器表达式为long
、float
、double
和boolean
及其对应的装箱类型,case
常量需与选择器表达式类型匹配,浮点数字面量在case
标签中的语义基于运行时的表示等价性。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。