如下節選自jdk1.6的api:
isInstance
public boolean isInstance(Object obj)
判定指定的 Object 是否與此 Class 所表示的對象指派相容。此方法是 Java 語言 instanceof 運算符的動态等效方法。
如果指定的 Object 參數非空,且能夠在不引發 ClassCastException 的情況下被強制轉換成該 Class 對象所表示的引用類型,則該方法傳回 true;否則傳回 false。
特别地,當該 Class 對象表示一個已聲明的類時,若指定的 Object 參數是所表示類(或其任一子類)的一個執行個體,則此方法傳回 true;否則傳回 false。
如果此 Class 對象表示一個數組類,且通過身份轉換或擴充引用轉換,指定的 Object 參數能轉換為一個數組類的對象,則傳回 true;否則傳回 false。如果此 Class 對象表示一個接口,且指定 Object 參數的類或任一超類實作了此接口,則此方法傳回 true;否則傳回 false。
如果此 Class 對象表示一個基本類型,則此方法傳回 false。
參數:
obj - 要檢查的對象
傳回:
如果 obj 是此類的執行個體,則傳回 true
注意紅色标注部分:
1.與 instanceof 運算符等效,隻是用法有差別而已
2.obj為null,直接傳回false;本方法與 強制轉換 或 class.cast(Object obj) 轉換結合在一起使用
if(Person.class.isInstance(obj)){
Person temp = Person.class.cast(obj);
}
3.isInstance方法适用于對象,不适用于基本類型
版權聲明:本文為CSDN部落客「weixin_34269583」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/weixin_34269583/article/details/92298269