【Java】型安全な(Map|List)リテラルのようなものを実装してみた
Javaを書いてて、
|
|
みたいなのを沢山書くのが超絶面倒だったので作っちゃいました。
Mapリテラル
お好きなパッケージ(自分は「literal」にしてみました)に突っ込んで、以下のように使います。
|
|
実装について
Builderパターン(の変形)を使ってMapを生成しているだけです。ただ、可読性を高めるために以下の仕掛けを施しています
- 「put(K key, V value)」メソッドでBuilderのオブジェクトを生成し、さらに同名の「put(K key, V value)」メソッドで値追加をすることでIDE(というより自分)を騙す。
- Builderクラスに渡される型パラメータ(KとV)は、オブジェクト生成時(つまり、1回目のput時)に確定します。なので、代入先のMapと同じ型だけをputできます。キャスト不要で型安全。
- 普通は「build()」とか「construct()」とかにするところを「end()」にして終わった感を出す。
たとえば、
|
|
みたいなコードはコンパイルエラーになります。素敵。
Listリテラル
同様にListリテラルも作ってみました。
|
|
仕組みはMapのときと同じなので説明は割愛。
まとめ
え? リテラルじゃないって?楽できて見やすいからいーのです。