在调用 instanceof 之前是否需要空值检查?
2022-08-31 03:55:51
会返回或抛出一个 ?null instanceof SomeClass
false
NullPointerException
会返回或抛出一个 ?null instanceof SomeClass
false
NullPointerException
否,在使用 instanceof 之前不需要空值检查。
表达式是 if 是 。x instanceof SomeClass
false
x
null
Java 11 语言规范在第 15.20.2 节 “类型比较运算符实例”中简明扼要地表达了这一点。(Java 17 在引入实例模式匹配之后,不那么简洁地表达了这一点。
“在运行时,运算符的结果是关系表达式的值不为
null
,并且引用可以强制转换为 ReferenceType 而不引发 。否则结果就是。instanceof
true
ClassCastException
false
因此,如果操作数为 null,则结果为 false。
使用空引用作为返回 的第一个操作数。instanceof
false