1分鐘完全理解isInstance

以下節選自jdk1.6的api:

 

isInstance

public boolean isInstance(Object obj)java

斷定指定的 Object 是否與此 Class 所表示的對象賦值兼容。此方法是 Java 語言 instanceof 運算符的動態等效方法api

若是指定的 Object 參數非空,且可以在不引起 ClassCastException 的狀況下被強制轉換成該 Class 對象所表示的引用類型,則該方法返回 true;不然返回 false數組

特別地,當該 Class 對象表示一個已聲明的類時,若指定的 Object 參數是所表示類(或其任一子類)的一個實例,則此方法返回 true;不然返回 false。
若是此 Class 對象表示一個數組類,且經過身份轉換或擴展引用轉換,指定的 Object 參數能轉換爲一個數組類的對象,則返回 true;不然返回 false。若是此 Class 對象表示一個接口,且指定 Object 參數的類或任一超類實現了此接口,則此方法返回 true;不然返回 false。spa

若是此 Class 對象表示一個基本類型,則此方法返回 falsecode

參數:對象

obj - 要檢查的對象接口

返回:io

若是 obj 是此類的實例,則返回 trueast

 

 

注意紅色標註部分:class

1.與 instanceof 運算符等效,只是用法有區別而已

2.obj爲null,直接返回false;本方法與 強制轉換 或 class.cast(Object obj) 轉換結合在一塊兒使用

if(Person.class.isInstance(obj)){
    Person temp = Person.class.cast(obj);
}

3.isInstance方法適用於對象,不適用於基本類型

相關文章
相關標籤/搜索