instanceof 和 Class.isAssignableFrom(...) 有什么区别?

新手上路,请多包涵

以下哪个更好?

 a instanceof B

或者

B.class.isAssignableFrom(a.getClass())

我知道的唯一区别是,当“a”为空时,第一个返回 false,而第二个抛出异常。除此之外,他们总是给出相同的结果吗?

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

阅读 873
2 个回答

使用 instanceof 时,需要在编译时知道 B 的类。当使用 isAssignableFrom() 它可以是动态的并且在运行时改变。

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

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