2012年9月24日月曜日

インスタンスイニシャライザを利用したMapの初期化方法

インスタンスイニシャライザを利用したMapの初期化方法をメモしておきます.

インスタンスイニシャライザという仕組みを使えば,初期化されたマップを宣言できるようです.例えば,"a","b","c"というキーに対してそれぞれ1,2,3を値とするマップを宣言する場合は,以下のようなコードとなります.

Map map = new HashMap() {{
    put("a", 1);
    put("b", 2);
    put("c", 3);
 }};

一見文法違反のように見えますが,無事コンパイルできます. HashMapを継承した匿名クラスのインスタンスイニシャライザ内で,HashMapから継承したputメソッドを呼び出しているからOKということなんでしょうか(適当に書いているので間違っているかもしれません). Javaでこんな書き方ができるなんて,知らなかった〜.

参考資料
[1] イニシャライザ
[2] [Java] インスタンスイ二シャライザで初期化したMapのシリアライズで