让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,就始终为真。
MM们
TA贡献1886条经验 获得超2个赞
为简便起见,我们可以像下面这样理解这两个API:
X.class.isAssignableFrom(Y.class)
如果X
和Y
是相同的类,或者X
是Y
的超类或超接口,则返回true,否则返回false。
X.class.isInstance(y)
说y
是class的实例Y
,如果X
和Y
是相同的类,或者X
是Y
的超类或超接口,则返回true,否则返回false。
添加回答
举报
0/150
提交
取消