Java instanceof關鍵字用法詳解及註意事項

 instanceof 嚴格來說是Java中的一個雙目運算符,用來測試一個對象是否為一個類的實例,用法為:

boolean result = obj instanceof Class

  其中 obj 為一個對象,Class 表示一個類或者一個接口,當 obj 為 Class 的對象,或者是其直接或間接子類,或者是其接口的實現類,結果result 都返回 true,否則返回false。

  註意:編譯器會檢查 obj 是否能轉換成右邊的class類型,如果不能轉換則直接報錯,如果不能確定類型,則通過編譯,具體看運行時定。

instanceof

instanceof是Java的一個保留關鍵字,左邊是對象,右邊是類,返回類型是Boolean類型。它的具體作用是測試左邊的對象是否是右邊類或者該類的子類創建的實例對象,是,則返回true,否則返回false。

instanceof使用註意事項

  • 先有繼承關系,再有instanceof的使用。
  • 當該測試對象創建時右邊的聲明類型左邊的類其中的任意一個跟測試類必須得是繼承樹的同一分支或存在繼承關系,否則編譯器會報錯。

instanceof使用示例

public class Application {

  public static void main(String[] args) {

    // Object > Person > teacher
    // Object > Person > Student
    // Object > String
    Object o = new Student(); // 主要看這個對象是什麼類型與實例化的類名
    // instanceof關鍵字可以判斷左邊對象是否是右邊類或者子類的一個實例
    System.out.println(o instanceof Student); // o 是Student類的一個實例對象 所以判斷右邊類跟student有無關系 以及顯示聲明有無關系
    System.out.println(o instanceof Person); // true
    System.out.println(o instanceof Object); // true
    System.out.println(o instanceof String); // false
    System.out.println(o instanceof Teacher); // 無關系
    System.out.println("========================");
    Person person = new Student();
    System.out.println(person instanceof Person); // true
    System.out.println(person instanceof Object); // true
    // System.out.println(person instanceof String); // 編譯錯誤
    System.out.println(person instanceof Teacher); // 無關系

  }
}

instanceof 應用場景

需要用到對象的強制類型轉換時,需要使用instanceof進行判斷。

到此這篇關於Java instanceof關鍵字用法詳解及註意事項的文章就介紹到這瞭,更多相關Java instanceof用法內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!

推薦閱讀: