instanceof關鍵字使用的方法(解決轉型異常ClassCastException)
阿新 • • 發佈:2020-08-28
一丶問題顯現:
當你是父類的情況下,像使用子類的特定功能,就需要向下轉型,但向下轉型有可能會報錯(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
}
}
}
三丶總結:
在向下轉型時使用
注意父類和子類的位置
判斷完記得強轉