JEP 405:记录模式(预览)
概括
_使用记录模式_增强 Java 编程语言以解构记录值。记录模式和类型模式可以嵌套,以实现强大的、声明性的、可组合形式的数据导航和处理。这是预览语言功能。
目标
-
扩展模式匹配以表达更复杂、可组合的数据查询。
-
不要更改类型模式的语法或语义。
动机
在 JDK 16 中,JEP 394扩展了该instanceof
运算符以采用_类型模式_并执行_模式匹配_。这个适度的扩展允许简化熟悉的 instanceof-and-cast 习惯用法:
// Old code
if (o instanceof String) {
String s = (String)o;
... use s ...
}
// New code
if (o instanceof String s) {
... use s ...
}
在新代码中,如果在运行时 的值是 的实例,则o
匹配类型模式。如果模式匹配,则表达式为,并且模式变量被初始化为强制转换为的值,然后可以在包含的块中使用该值。String s``o``String``instanceof``true``s``o``String
switch
在 JDK 17 和 JDK 18 中,我们还通过JEP 406和JEP 420将类型模式的使用扩展到大小写标签。
字体模式一次性消除了许多铸造的情况。然而,它们只是迈向更具声明性、以数据为中心的编程风格的第一步。由于 Java 支持新的、更具表现力的数据建模方式,模式匹配可以让开发人员表达其模型的语义意图,从而简化此类数据的使用。