Javaを書いてて、

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
Map<String, String> hogehogeMap = new HashMap<String,String>();
hogehogeMap .put("hoge", "fuga");
hogehogeMap .put("hoehoe", "fugafuga");

```みたいなのを沢山書くのが超絶面倒だったので作っちゃいました<br/>
<br/>


<div class="section">
    ### Mapリテラル
    <script src="https://gist.github.com/kunst1080/7837966.js?file=literal.M.java"></script>お好きなパッケージ(自分はliteralにしてみました)に突っ込んで以下のように使います
```java
Map&lt;String,String> h = literal.M
	.put("1", "fugafuga")
	.put("2", "aaaa")
	.end();
#### 実装について Builderパターン(の変形)を使ってMapを生成しているだけです。ただ、可読性を高めるために以下の仕掛けを施しています
  • 「put(K key, V value)」メソッドでBuilderのオブジェクトを生成し、さらに同名の「put(K key, V value)」メソッドで値追加をすることでIDE(というより自分)を騙す。
  • Builderクラスに渡される型パラメータ(KとV)は、オブジェクト生成時(つまり、1回目のput時)に確定します。なので、代入先のMapと同じ型だけをputできます。キャスト不要で型安全。
  • 普通は「build()」とか「construct()」とかにするところを「end()」にして終わった感を出す。
ちゃんとジェネリッククラスで作成しているので、型安全です。
たとえば、 ```java Map<String,String> h = literal.M .put(1, "fugafuga") .put("2", 2) .end(); Map<Integer,String> h = literal.M .put("1", "fugafuga") .put("2", "2") .end(); ```みたいなコードはコンパイルエラーになります。素敵。