@ledsun blog

Hのキーがhellで、Sのキーがslaveだ、と彼は思った。そしてYのキーがyouだ。

明示的なキャストしてんのに警告するJavaとか死ねばいい

Javaアノテーションで警告を消す仕様にぶちぎれた*1ら、@ufcpp さんにコメントをもらったので試してみました。

結論、ジェネリックなクラスにキャストする場合はアノテーションを使うしかない。

使ったソースはこれ

オブジェクト指向言語として初めてメジャーになった功績が大きいJavaですが、今となっては負の資産が大きくなり過ぎました。チェック例外とジェネリックの(コンパイル時に型情報が消える)仕様、一つずつはそうでもありませんが二つ合わさると予想外に厄介です。今回の問題に関してはClassCastExceptionを非チェック例外にすればだいぶ良くなると思います。下位互換の問題も無いのでとっとと対応して欲しいです。

*1:https://twitter.com/#!/ledsun/status/144966284642226177