horshoo
horshoo
发布于 3周前

Java 14新特性:instanceof的模式匹配

Java中instanceof是用来判断对象的类型是否是目标类型。如果是返回true,不是返回false。

在Java 14之前,示例如下:

if (obj instanceof String) {
    String str = (String) obj; 
    .. str.contains(..) ..
}else{
     str = ....
}

obj instanceof String已经为true,在后面的代码里,我们还是要清晰的定义一个新变量,并且要做类型强转换。看似有点反人类哈。

Java 14对instanceof引入了模式匹配,修改后的代码如下:

if (!(obj instanceof String str)) {
    .. str.contains(..) 
} else {
    .. str....
}

定义了str,就可以在后续代码使用,不在需要显式做类型转换了。

添加条件示例:

if (obj instanceof String str && str.length() > 5) {.. str.contains(..) ..}
if (obj instanceof String str || str.length() > 5) {.. str.contains(..) ..}

instanceof会对obj是否为null以及是否为String做检查。