2013年7月7日日曜日

キャストは必ずしも型変換ではない

Javaのキャストについて少し触れます。

教育や研修などで、「型変換→キャスト」と教えられる事が多いと思います。
long l = 465L;
int i = (int) l;
といった感じ。

ただ「キャスト→型変換」は必ずしも正ではない。
char c = '4';
int i = (int) c;
このケースはコンパイルエラーにならないし、
実行時エラーにもならない。

i の値は 4 ではなく、'4' という Unicode の文字コードを格納しています。
つまり、コーダの意図した結果にはなりません。

Javaを覚えたての頃は、型を置き換えるのに
頻繁にキャストを使っていましたが、これは安全ではないです。
できるなら、ジェネリクス等を用いて、
キャストしなくてもいいコードを目指す方が良いと思います。

でわでわ。

0 件のコメント:

コメントを投稿