专栏目录

三、Java 9 ~ 17 新特性试读

专栏目录

三、Java 9 ~ 17 新特性试读

Java 16 新特性: instanceof 增强

作者头像 犬小哈
416字
2分钟
2张图
3,195

友情提示 : 推荐使用谷歌浏览器来阅读本专栏,其他浏览器可能存在兼容性问题。

本小节中,我们来学习一下 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 判断中,顺便定义判断对象的变量名,方法块中只接使用即可,无需再手动强转了。

控制台输出和上面一致:

添加小哈私人微信

已加入星球的小伙伴,记得添加小哈私人微信,拉你进 VIP 讨论群

一定要备注 “星球” 哟,不然通过率极低

分享有赏

打开星球 APP,操作图如下

觉得星球还不错的话,可邀请好友加入呀

通过星球 APP 专属的分享链接加入,分享者将获得票价的 40% 分成,同时可获得大量积分,每月积分靠前者,可获取小哈赠书哟,一波赢回票价~

微信扫一扫,加入星球

领券加入,超便宜~

专属的项目实战 / 1v1 提问 / Java学习路线

社群讨论 / 每月赠书 / 学习打卡

👉星球介绍