[Java]キャスト(型変換)

キャスト

Javaでコードを書いている時、しばしば型変換=キャストをしたい時があり、その時に使うのがキャスト演算子です。

(新しい型名) 変数
// "(" と ")" がキャスト演算子

のようにして変換できます。

変換のときに注意しなければならないのが、ダウンキャストといって、サブクラスにキャストする時です。

2つのクラス「A」と「B extends A」があった時、クラスAからクラスBにキャストするのがダウンキャストです。

例えばObject型からSrting型にキャストするのがダウンキャストです。

例外への対策

問題のあるキャストをすると、

java.lang.ClassCastException

という「例外」が起きます。

この例外を避けるために、

instanceof演算子を使って型のチェックをする

という方法があります。

if (a instanceof Integer) {
  Integer x = (Integer)a;
}

nullは特別で、全ての参照型と代入互換性があるので、nullをキャストする時に例外は発生しません。

参考資料

強く型付けされているJavaの理解に必修の“型変換”