Mapの初期化
JRubyのソースコードを読んでたらみつけた無名クラスを使った初期化方法。
Map<String, Integer> map = new HashMap<String, Integer>(); map.put("one", 1);
が次のように書かれてた。
Map<String, Integer> map = new HashMap<String, Integer>() {{ put("one", 1); }};
名前をつけずに初期化できるんで、スクリプト言語みたいにそのまま引数にわたしたりできる。
括弧が2つあって何かと思ったが、初期化子だったのか。
変な書き方だけど有名なのかな。1ペアならCollections.singletonMap()でいいんだけど。
Map<String, Integer> map = new HashMap<String, Integer>() { { put("one", 1); } };