ローカル変数の型

メソッドの引数は戻り値はともかく、ローカル変数はわざわざ抽象的な型で宣言しなくてもいいんじゃね、という話。ローカル変数の場合は影響範囲が限られているし、たしかに問題ないかも。
でも、コレクションに限って言えば、List, Set, Map で宣言しておいてもあまり問題はないかなぁ。追加されるメソッドも多くはないし。いや、もちろん ArrayList, HashMap と宣言しても問題は思い浮かばないけど。
ところで、ダウンキャストの必要な典型的な場面はどんなのがあるだろう。

  • J2SE 1.4 以前でコレクションを扱うとき
  • Object#clone の戻り値
  • equals, compareTo の引数
  • Graphics -> Graphics2D とかその他 Java2D 周り
  • URLConnection -> HttpURLConnection

みんなメソッドの引数、戻り値関連だな。当たり前だけど。