在查詢型別資訊時,以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...