Relates :
|
Summary ------- A _collection literal_ is a syntactic expression form that evaluates to an aggregate type, such as an array, `List`, or `Map`. Many languages support collection literals. A `List` literal in Java might look like: List<Integer> list = #[ 1, 2, 3 ]; Collection literals were proposed for Project Coin and naturally complement the library additions in Java SE 8. Collection literals can reduce boilerplate code, improve performance, and increase safety. Goals ----- This is a _research JEP_. The sole goal of this JEP is to explore the design space sufficiently to be able to propose a feature JEP (or recommend that the feature not be pursued.) Non-Goals --------- It is not a goal of this research JEP to produce a production-ready implementation or specification. Success Metrics --------------- This research JEP will be judged successful if it produces a design that we wish to move forward to a feature JEP, or else certainty that we do not wish to proceed with this feature. Motivation ---------- Collection literals can increase programmer productivity, code readability, and code safety. Description ----------- Being able to initialize arrays, lists, sets, and maps with a compact expression offers many benefits, including: - Clarity (smaller, simpler code); - Dynamic footprint (the size is known, so a space-efficient implementation can be chosen); and - Safety (the resulting object can be made immutable). While a minimal solution that works for arrays, `List`s, and `Map`s would be "trivial", we would like to explore beyond such a simple-minded solution, leveraging target typing and which might enable an extensible set of types to exploit this feature.