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

新手上路,请多包涵

null instanceof SomeClass 返回 false 还是抛出 NullPointerException

原文由 Johan Lübcke 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

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

表达式 x instanceof SomeClassfalse 如果 xnull 7b707e——-dcf4f08f147d98f294b

Java 11 语言规范在 第 15.20.2 节“类型比较运算符 instanceof” 中简洁地表达了这一点。 (在引入 instanceof 模式匹配之后, Java 17 表达得不太简洁。)

“在运行时,如果 RelationalExpression 的值 不是 null instanceof true 可以转换为 ReferenceType 而没有提高 ClassCastException 。否则结果是 false 。”

因此,如果操作数为空,则结果为假。

原文由 Andy Thomas 发布,翻译遵循 CC BY-SA 4.0 许可协议

使用空引用作为 instanceof 的第一个操作数返回 false

原文由 Bozho 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题