讓clazz一些Class和obj一些Object。是clazz.isAssignableFrom(obj.getClass())總是和clazz.isInstance(obj)?如果沒有,有什么區(qū)別?
3 回答

慕斯709654
TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個贊
clazz.isAssignableFrom(Foo.class)只要該clazz對象表示的類是的超類或超接口,它就為true Foo。
clazz.isInstance(obj)只要對象obj是類的實(shí)例,它將為true clazz。
那是:
clazz.isAssignableFrom(obj.getClass()) == clazz.isInstance(obj)
只要clazz并且obj為非null,就始終為真。

MM們
TA貢獻(xiàn)1886條經(jīng)驗(yàn) 獲得超2個贊
為簡便起見,我們可以像下面這樣理解這兩個API:
X.class.isAssignableFrom(Y.class)
如果X
和Y
是相同的類,或者X
是Y
的超類或超接口,則返回true,否則返回false。
X.class.isInstance(y)
說y
是class的實(shí)例Y
,如果X
和Y
是相同的類,或者X
是Y
的超類或超接口,則返回true,否則返回false。
添加回答
舉報
0/150
提交
取消