http://openjdk.java.net/jeps/186 をテキトーに訳した。
JEP 186: Collection Literals
Owner Brian Goetz Created 2013/06/20 20:00 Updated 2016/01/09 01:18 Type Feature Status Draft Component specification/language Scope JDK Discussion lambda dash dev at openjdk dot java dot net Effort S Duration S Priority 4 Issue 8046176 Relates to JEP 269: Convenience Factory Methods for Collections
Summary
コレクションリテラル(collection literal)とは、配列・List
・Map
などの、集約型に評価する構文の表現形式です。コレクションリテラルをサポートする言語は多数存在します。JavaでのList
リテラルは以下のようになると思われます。
List<Integer> list = #[ 1, 2, 3 ];
コレクションリテラルはProject Coinとして提案され、Java 8で追加されたライブラリの穴を埋めるものとしてはごく自然なものです。コレクションリテラルはポイラープレートを減少させ、パフォーマンスの向上および安全性を向上させます。
Goals
本JEPは調査用JEP(research JEP)です。本JEPの唯一の目的は機能追加用JEPを提案するために十分なデザインスペース*1を調査することです(もしくはこれ以上の調査は推奨しないとの報告をする)。
Non-Goals
この調査用JEPでは実用可能な実装ないし仕様の作成は目的としない。
Success Metrics
この調査用JEPが成功と判断されるのは、機能追加用JEPへの移行が望ましいと思われる設計を作成した場合か、機能追加が確実に望ましくない場合です。
Motivation
コレクションリテラルは、プログラマの生産性・コードの可読性と安全性、を向上させます。
Description
配列・リスト・セット・マップの初期化をコンパクトな式で書けることには多数の利点があります。たとえば、
- 明瞭さ(単純でシンプルなコード)
- Dynamic footprint(サイズが既知の場合、空間を効率的に使える実装が選択可能)
- 安全性(生成されるオブジェクトをイミュータブルに出来る)
配列・List・Mapで動作する最低限の方法は"平凡(trival)"なので、我々はそのような単純なやり方を超えるものを検討しており、target typing*2を活用し、本機能を活用するのに拡張可能な型セットを有効化する可能性があります*3。
*1:design spaceが原文。
*2:あるコンテキストにおいて推論される型のこと。参考 http://stackoverflow.com/questions/33196325/java-8-target-typing
*3:and which might enable an extensible set of types to exploit this feature.が原文。よくわからん。