为了账号安全,请及时绑定邮箱和手机立即绑定

java:Class.isInstance与Class.isAssignableFrom

java:Class.isInstance与Class.isAssignableFrom

胡子哥哥 2019-11-05 16:26:38
让clazz一些Class和obj一些Object。是clazz.isAssignableFrom(obj.getClass())总是和clazz.isInstance(obj)?如果没有,有什么区别?
查看完整描述

3 回答

?
慕斯709654

TA贡献1840条经验 获得超5个赞

clazz.isAssignableFrom(Foo.class)只要该clazz对象表示的类是的超类或超接口,它就为true Foo。


clazz.isInstance(obj)只要对象obj是类的实例,它将为true clazz。


那是:


clazz.isAssignableFrom(obj.getClass()) == clazz.isInstance(obj)

只要clazz并且obj为非null,就始终为真。


查看完整回答
反对 回复 2019-11-05
?
MM们

TA贡献1886条经验 获得超2个赞

为简便起见,我们可以像下面这样理解这两个API:

  1. X.class.isAssignableFrom(Y.class)

如果XY是相同的类,或者XY的超类或超接口,则返回true,否则返回false。

  1. X.class.isInstance(y)

y是class的实例Y,如果XY是相同的类,或者XY的超类或超接口,则返回true,否则返回false。


查看完整回答
反对 回复 2019-11-05
  • 3 回答
  • 0 关注
  • 527 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信