在调用 instanceof 之前是否需要空值检查?

2022-08-31 03:55:51

会返回或抛出一个 ?null instanceof SomeClassfalseNullPointerException


答案 1

否,在使用 instanceof 之前不需要空值检查。

表达式是 if 是 。x instanceof SomeClassfalsexnull

Java 11 语言规范在第 15.20.2 节 “类型比较运算符实例”中简明扼要地表达了这一点。(Java 17 在引入实例模式匹配之后,不那么简洁地表达了这一点

“在运行时,运算符的结果是关系表达式的值不为 null,并且引用可以强制转换为 ReferenceType 而不引发 。否则结果就是。instanceoftrueClassCastExceptionfalse

因此,如果操作数为 null,则结果为 false。


答案 2

使用空引用作为返回 的第一个操作数。instanceoffalse