インスタンスイニシャライザ

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的なことも可能。
でも、それやると、$のついたクラスファイルが鬼のようにできるので、ちょっと気持ち悪い。