型宣言は汎用的にすべきか?

http://cappuccino.jp/keisuken/logbook/20080304.html#p01
ローカル変数の型宣言はできる限り特定しておいたほうがよいという趣旨なら、まったくそのとおりだと思います。

void f ()
{
  HashMap<String, String> m = new HashMap<String, String>();
  ...
}

の方が、下のコードよりもよい。HashMapの場合はよさが分かりにくいですが。

void f ()
{
  Map<String, String> m = new HashMap<String, String>();
  ...
}

型宣言を汎用的にしておくべきというのは、メソッドの引数とかの話だと考えています。

void g (HashMap<String, String> m)
{
  ...
}

よりも、下のコードの方がよい。なぜなら、下のコードの方がより多くの種類の引数を受け取れるため、メソッドを再利用しやすくなるためです。

void g (Map<String, String> m)
{
  ...
}