instanceof是Java語言中的一個二元運算符,它的作用是:判斷一個引用類型變量所指向的對象是否是一個類(或接口、抽象類、父類)的實例,即它左邊的對象是否是它右邊的類的實例,該運算符返回boolean類型的數據。
boolean result = obj instanceof Class
其中obj為一個對象,Class表示一個類或者一個接口,當obj為Class的對象,或者是其直接或者間接子類,或者是接口的實現類,結果result 都返回true,否則返回false。
注意:編譯器會檢查 obj 是否能轉換成右邊的class類型,如果不能轉換則直接報錯,如果不能確定類型,則通過編譯,具體看運行時定。
?
2、instanceof?應用
1.??其中obj 必須為引用類型,不能是基本類型,instanceof?運算符只能用作對象的判斷。
?
2.??當obj為null
一般我們知道java分為兩種數據類型,一種是基本數據類型,有8個:byte、short、int、long、float、double、char、boolean,一種引用類型,包括類,接口,數組等等。而java中還有一種特殊的null類型,該類型沒有名字,所以不能聲明為null類型的變量或者轉換為null,null引用是null類型表示式唯一可能的值,null引用也可以轉換為任意引用類型。在JavaSE規范中對instanceof 運算符的規定就是:如果obj為null,返回false。
?
?
3.??obj為class 類的實例對象
?
4.??obj為Class接口的實現類
了解java集合,我們知道集合中有一個上層接口List,其中有個典型的實現類 ArrayList
?
所以我們可以用instanceof 運算符判斷某個對象是否是List 接口的實現類,如果是返回true,否則返回false。
或者反過來也是true
?
?