Java 強制型別轉換(類轉換注意事項)
阿新 • • 發佈:2019-01-28
將一個型別強制轉換成另一個型別的過程被稱為型別轉換.例如:
double x =3.14;
int y = (int)x;
將表示式x的值轉換成整數型別,捨棄小數部分.
有時候也可能是類的物件引用的轉換.
譬如:
Manger boss = (Manger)staff[0];
我們知道如果將一個子類的引用賦給一個超類變數,是可以的. 但是反過來,必須進行型別轉換.
但是轉換的時候,可能出現"謊報"的ClassCastException異常.,如果沒有捕獲該異常,程式就會停止.
因此, 我們應該養成一個良好的程式設計習慣,在進行型別轉換之前,先看一下是否能成功轉換.
這個過程簡單地使用instanceof運算子就可以實現.例如:
if(staff[0] instanceof Manger){
boss = (Manger)staff[0];
...
}
這樣,如果轉換不成功,編譯器就不會進行這個轉換.
綜述:
- 只能在繼承層次內進行型別轉換
- 在將超類轉換成子類之前,應該使用instanceof進行檢查.