Java 16 新特性: instanceof 增强
友情提示
推荐您使用 Chrome 浏览器来阅读本实战专栏,其他浏览器可能存在兼容性问题。
本小节中,我们来学习一下 Java 16 中的新特性 —— instanceof
类型判断增强。
1. Java 16 之前的类型判断
先看一下,在 Java 16 之前,假设我们想对某个对象进行类型判断,并在判断成功后,使用到具体对象的某个方法,示例代码如下:
public class Main {
public static void test(Object object) {
if (object instanceof Integer) {
// 类型转换
Integer i = (Integer) object;
System.out.println("object is Integer: " + i.intValue());
} else if (object instanceof String) {
// 类型转换
String s = (String) object;
// 替换字符串
System.out.println("object is String: " + s.replace("教程", "专栏"));
}
}
public static void main(String[] args) {
test(1);
test("犬小哈教程");
}
}
想要使用到具体对象的某个方法,如
Integer
对象中定义的intValue()
方法,首先,你必须手动强转成Integer
对象才行。语法上有点啰嗦,有木有~
控制台输出如下:
2. Java 16 之后的类型判断
在 Java 16 之后,无需再显示的进行类型强转了。使用新特性来重写上面的示例代码,如下:
public class Main {
public static void test(Object object) {
if (object instanceof Integer i) {
System.out.println("object is Integer: " + i.intValue());
} else if (object instanceof String s) {
// 替换字符串
System.out.println("object is String: " + s.replace("教程", "专栏"));
}
}
public static void main(String[] args) {
test(1);
test("犬小哈教程");
}
}
我们可以在
instanceof
判断中,顺便定义判断对象的变量名,方法块中只接使用即可,无需再手动强转了。
控制台输出和上面一致: