インスタンスイニシャライザ
setRedirect(DetailPage.class, new HashMap(){{put("customer", id);}});
http://www3.vis.ne.jp/~asaki/p_diary/diary.cgi?Date=20090525#2009052500
実際にこう書くかどうかは別として、その発想はなかったぜ!と思いました。
インスタンスイニシャライザの話。
自分は、定数とか、テストとかのときによくつかうけど。
確か、ここを読んでからだと思う。
http://d.hatena.ne.jp/cypher256/20080114/p1
得にMapやらListやらの定数を定義したいときは、staticイニシャライザを使うよりも、
ひとつながりの文のようにかけるのでよりスマートに見えると思う。
static final Map M = Collections.unmodifiableMap(new HashMap(){{ put("foo", "bar"); put("piyo", "piyopiyo"); }});
このインスタンスイニシャライザを使えば、内部DSL的なことも可能。
でも、それやると、$のついたクラスファイルが鬼のようにできるので、ちょっと気持ち悪い。