JavaのMapを簡単に使えるようにした

追記: これ、ダメだ。。。Foo.map(...).put(...).put(...) だとエラーになる... orz

JavaのMapはリテラルが無いので、Map作るのが面倒!

Map map = new HashMap();
map.put("java", "('A`)");
map.put("ruby", "(´∀`)");
map.put("python", "(`・ω・´)");

mapを扱う機会が多かったので、簡単に作れる方法をググってみたら、Javaにおける疑似Map生成リテラル({ key => value }ばりに簡単にMapを生成する方法) - 矢野勉のはてな日記 とかが見つかった。

引用すると

// Example usage :
import static Literals.map;

Map<String,Integer> example = map("hello",1).map("world",2).map("!",3);

みたいな書き方が出来るらしい。これは良さそう!

だが・・・

諸事情により、クラスを簡単に作成できない環境だったので、
匿名クラスを使ってやってみた。

class Foo {
    public static Map map(Object key, Object value) {
        return new HashMap() {
            public Map put(Object key, Object value) {
                super.put(key, value);
                return this;
            }
        }.put(key, value);
    }
}

これならメソッドを1つ作るだけ*1

Map example = (Map)Foo.map("foo", "var").put("hoo", "piyo");

とかの使い方が出来る!

ここまで書いてはみたけど・・・

普通の開発環境ならリンク先のMapBuilderとかを作った方が良い。

*1:Fooクラスは元々あった適当なクラス