JEP 186: Collection Literals
Литералы коллекций
| Ответственный | Brian Goetz |
| Тип | Feature |
| Область | JDK |
| Статус | Closed / Withdrawn |
| Компонент | specification / language |
| Обсуждение | lambda dash dev at openjdk dot java dot net |
| Трудоёмкость | S |
| Длительность | S |
| Связан с | JEP 269: Convenience Factory Methods for Collections |
| Создан | 2013/06/20 20:00 |
| Обновлён | 2022/06/28 14:04 |
| Задача | 8046176 |
Аннотация
Литерал коллекции — это синтаксическая форма выражения, значением которой является агрегатный тип, например массив, List или Map. Литералы коллекций поддерживаются во многих языках. Литерал List в Java мог бы выглядеть так:
List<Integer> list = #[ 1, 2, 3 ];
Литералы коллекций предлагались для проекта Coin и естественным образом дополняют новые возможности библиотек в Java SE 8. Литералы коллекций могут сократить объём шаблонного кода, повысить производительность и безопасность.
Цели
Это исследовательский JEP. Единственная цель этого JEP — изучить пространство проектных решений в достаточной мере, чтобы можно было предложить JEP для конкретной возможности (или рекомендовать не заниматься этой возможностью).
Что не является целью
Создание готовой к промышленному использованию реализации или спецификации не является целью этого исследовательского JEP.
Критерии успеха
Этот исследовательский JEP будет считаться успешным, если в его результате появится проект, который мы захотим развить в JEP для конкретной возможности, или же появится уверенность, что мы не хотим продолжать работу над этой возможностью.
Мотивация
Литералы коллекций могут повысить продуктивность программистов, читаемость и безопасность кода.
Описание
Возможность инициализировать массивы, списки, множества и отображения компактным выражением даёт много преимуществ, в том числе:
- Ясность (меньше кода, и он проще);
- Динамический объём памяти (размер известен, поэтому можно выбрать экономную по памяти реализацию); и
- Безопасность (результирующий объект можно сделать неизменяемым).
Хотя минимальное решение, работающее для массивов, List и Map, было бы «тривиальным», мы хотели бы выйти за рамки такого упрощённого решения и использовать типизацию по целевому типу (target typing), что, возможно, позволит применять эту возможность к расширяемому набору типов.