1. 程式人生 > 實用技巧 >instanceof關鍵字使用的方法(解決轉型異常ClassCastException)

instanceof關鍵字使用的方法(解決轉型異常ClassCastException)

一丶問題顯現:

  當你是父類的情況下,像使用子類的特定功能,就需要向下轉型,但向下轉型有可能會報錯(ClassCastException)

  而instanceof關鍵字就是解決異常的小能手,他能判斷是否能轉型

二丶解決方法:

為了避免ClassCastException的發生,Java提供了 instanceof 關鍵字,給引用變數做型別的校驗,格式如下:

變數名 instanceof 資料型別 
如果變數屬於該資料型別,返回true。
如果變數不屬於該資料型別,返回false。

所以,轉換前,我們最好先做一個判斷,程式碼如下:

public class Test {
public static void main(String[] args) {
// 向上轉型
Animal a = new Cat();
a.eat(); // 呼叫的是 Cat 的 eat

// 向下轉型 的判定
     // a父類 判斷 Cat子類
if (a instanceof Cat){
      
    // 向下轉型(強轉)
     Cat c = (Cat)a;
     c.catchMouse();// 呼叫的是 Cat 的 catchMouse
     } else if (a instanceof Dog){
Dog d = (Dog)a;
d.watchHouse(); // 呼叫的是 Dog 的 watchHouse
}
}
}

三丶總結:

    在向下轉型時使用

    注意父類和子類的位置

    判斷完記得強轉