JDK23中的instanceof

180 阅读1分钟

前言

JDK23以前版本,instanceof关键字是不支持拓展基本类型,允许在所有模式上下文中使用原始类型,包括 longfloatdoubleboolean等,但目前是预览属性

instanceof使用

JDK23以前是这么使用的,要使用引用类型

public class Instanceof1Demo {


    public static void main(String[] args) {
        Object data = 1;
        if (data instanceof Integer) {
            System.out.println(data);
        } else {
            System.out.println(2);
        }
    }
}

输出结果为 image.png

使用JDK23中的instanceof要先开启预览属性

public class Instanceof1Demo {


    public static void main(String[] args) {
        Object data = 1;
        if (data instanceof int str) {
            System.out.println(str);
        } else {
            System.out.println(2);
        }
    }
}

输出结果为

image.png

总结

JDK23中,JEP 455 的预览特性中,instanceof 全面支持所有原始类型,包括 byteshortcharintlongfloatdoubleboolean,但是属于预览属性,没有转正,使不使用就看个人选择