instanceof與Class的等價性

2021-08-20 10:50:10 字數 1194 閱讀 1126

在查詢型別資訊時,以instanceof的形式(即以instanceof的形式或isinstance()的形式)與直接比較class物件有乙個很重要的差別。instanceof保持了型別的概念,它指的是 你是這個類或者這個類的派生類嗎?而用==比較實際的class物件,就沒有考慮繼承,它或者是這個確切的型別,或者不是。

package com.aijie.typeinfo;   

/**

* @author e-mail:

* @version 2023年6月2日 下午7:41:45

*/class base{}

class derived extends base{}

public class familyv***acttype

public static void main(string args)

}

testing x of type class com.aijie.typeinfo.base

x instanceof base true

x instanceof derived false

base.isinstance(x) true

derived.isinstance(x) false

x.getclass() == base.class true

x.getclass() == derived.class false

x.getclass().equals(base.class)true

x.getclass().equals(derived.class)false

testing x of type class com.aijie.typeinfo.derived

x instanceof base true

x instanceof derived true

base.isinstance(x) true

derived.isinstance(x) true

x.getclass() == base.class false

x.getclass() == derived.class true

x.getclass().equals(base.class)false

x.getclass().equals(derived.class)true

instanceof與getClass的區別

在比較乙個類是否和另乙個類屬於同乙個類例項的時候,我們通常可以採用instanceof和getclass兩種方法通過兩者是否相等來判斷,但是兩者在判斷上面是有差別的,下面從 中看看區別 public class test public static void main string args cla...

instanceof與型別轉化

j a中用來判斷兩個類是否有無父子關係 能否編譯通過 建立person類的兩個子類student類和teacher類 package com.yuanyu.oop public static void main string args package com.yuanyu.oop public cl...

typeof 與instanceof 的區別

1.typeof 方法是用於判斷簡單的資料型別,例如string,number,object,undefined null boolean var a 123 var b 123 var ar new array typeof a stirng typeof b number typeof ar o...