Javaを書いてて、

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
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();

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<br/>


</div>
</div>
<div class="section">
    ### Listリテラル
    同様にListリテラルも作ってみました。<br/>
<script src="https://gist.github.com/kunst1080/7837966.js?file=literal.L.java"></script>使い方は同じで、こんな風にします。
```java
List&lt;String> l = literal.L
	.add("1")
	.add("fuga")
	.add("aa")
	.end();

```仕組みはMapのときと同じなので説明は割愛。

</div>
<div class="section">
    ### まとめ
    え? リテラルじゃないって?楽できて見やすいからいーのです。

</div>