1. 程式人生 > >Java 強制型別轉換(類轉換注意事項)

Java 強制型別轉換(類轉換注意事項)

將一個型別強制轉換成另一個型別的過程被稱為型別轉換.例如:

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進行檢查.
注: x instanceof c  如果x 為null, x instanceof c 不會產出異常,只是返回false,因為null沒有引用任何物件. 一般情況下,應該儘量少用型別轉換和instanceof運算子.