天天看點

1分鐘徹底了解isInstance

如下節選自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