将null instanceof SomeClass返回false或抛出一个NullPointerException?
不,在使用 instanceof 之前不需要进行空值检查。
表达式x instanceof SomeClass是falseif xis null。
x instanceof SomeClass
false
x
null
Java 11 语言规范在第 15.20.2 节“类型比较运算符 instanceof”中简洁地表达了这一点。(在引入 instanceof 模式匹配之后,Java 17 表达得不太简洁。)
“在运行时, instanceof运算符的结果是true如果RelationalExpression的值 不是null,并且可以将引用强制转换为ReferenceType 而不会引发 a ClassCastException。否则结果是false。”
instanceof
true
ClassCastException
因此,如果操作数为空,则结果为假。